Link to home
Start Free TrialLog in
Avatar of businessesatoz
businessesatoz

asked on

php timestamp function returns a wrong value

I used php timestamp function. its returning values for dates and to calculate number of days between two dates.

but I observed from 8th March its not giving correct answer.

When I run this for each date and see I saw that difference of timestamps for 7th March & 8th march is not 86400. its 82800. Why is that.?

But thereafter its again give correct difference between dates. but its cause for following function to return wrong answer.

Function is to see the Week Number of any given date. Based on a given date weeks are switching every Tuesday.
function get_week_n($input_date){
	$base_date = strtotime("2009-02-24"); //which is starting the week# 01
	
	$cal_date = strtotime($input_date);
	$diff = $cal_date - $base_date;
	$totaldays = (int)floor($diff / (60*60*24));
	
	$w_l1 = (int)floor($totaldays/7);
	$w_l2 = $w_l1 % 4;
	$week_n = $w_l2+1;
	return $week_n;
}

Open in new window

Avatar of shobinsun
shobinsun
Flag of India image

Hi,

Its working correct

Check that the following:
        $base_date = strtotime("2009-04-7"); //which is starting the week# 01
        $input_date = '2009-04-8';
        $cal_date = strtotime($input_date);
        $diff = $cal_date - $base_date;
        $totaldays = (int)floor($diff / (60*60*24));
        
        $w_l1 = (int)floor($totaldays/7);
        $w_l2 = $w_l1 % 4;
        $week_n = $w_l2+1;
 
	echo "<br>",$base_date;
	echo "<br>",$cal_date;
	echo "<br>:",$diff;
	echo "<br>Days:", $totaldays;
        echo "<br>No:", $w_l2;
        return $week_n;

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Steve Bink
Steve Bink
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of businessesatoz
businessesatoz

ASKER

No.

base date should start from 2009-02-24.

if you put $input_date='2009-04-28' it should be 63 days. but this returns 62 days and calculate. thats wrong.

but if you try it in localhost its return results with 63. this is happening when its uploaded to server.

I need it to calculate it with 63 days.
Don't rely on seconds use days instead
<?php
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
?>

Open in new window