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

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

0
businessesatoz
Asked:
businessesatoz
1 Solution
 
shobinsunCommented:
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

0
 
Steve BinkCommented:
>>>  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
 
businessesatozAuthor 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
 
NerdsOfTechTechnology 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);
?>

Open in new window

0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

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