• Status: Solved
• Priority: Medium
• Security: Public
• Views: 438

# 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;
}
``````
0
1 Solution

Commented:
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;
``````
0

Commented:
>>>  I saw that difference of timestamps for 7th March & 8th march is not 86400. its 82800. Why is that.?

86400-82800=3600, which happens to be the same number of seconds in an hour.  Spring forward, fall back...daylight savings time made you 'lose' an hour.
0

Author Commented:
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.
0

Technology ScientistCommented:
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);
?>
``````
0

## Featured Post

Tackle projects and never again get stuck behind a technical roadblock.