ID: 22976 Updated by: [EMAIL PROTECTED] Reported By: scochrane at mackaysstores dot co dot uk -Status: Open +Status: Bogus Bug Type: Date/time related Operating System: NT4 Server PHP Version: 4.3.0 New Comment:
strtotime() uses the local timezone adjusted time unless you stick "GMT" at the end. Try this: echo date("H:i:s D M d, Y",strtotime("Last Sunday GMT")); echo date("H:i:s D M d, Y",strtotime("Last Sunday")); I am in PDT and right now this gives me: 16:00:00 Sat Mar 29, 2003 00:00:00 Sun Mar 30, 2003 which shows that strtotime adjusts for GMT correctly. Midnight last Sunday in GMT was actually Saturday in my timezone as GMT is 8 hours ahead of me, so it gave me 4pm Saturday. And when I pass it "Last Sunday" without the GMT, which means I am asking for midnight last sunday in my own timezone, I get exactly that. Previous Comments: ------------------------------------------------------------------------ [2003-03-31 08:21:28] scochrane at mackaysstores dot co dot uk By substituting mktime() with strtotime() has the same problem. On the strtotime page of the manual - one of the examples given states 'echo strtotime ("last Monday"), "\n";' - so I beleave my sytax is valid. With my script ammended to be valid (as below) I think this is a bug. function last_sunday() { return gmdate("Y-m-d", strtotime("Last Sunday")); } echo "Last Sunday is returned as: ".last_sunday(); With Daylight saving on the above = 2003-03-29 With Daylight saving off the above = 2003-03-30 I have also use the GMT keyword with strtotime(), but this fails also. ------------------------------------------------------------------------ [2003-03-31 05:51:58] [EMAIL PROTECTED] Sorry, but your problem does not imply a bug in PHP itself. For a list of more appropriate places to ask for help using PHP, please visit http://www.php.net/support.php as this bug system is not the appropriate forum for asking support questions. Thank you for your interest in PHP. Neither mktime() nor gmmktime() understands arguments like "last Sunday" -- please go and re-read the documentation for those functions. If you have any further questions, please ask them on the php-general list. ------------------------------------------------------------------------ [2003-03-31 05:39:46] scochrane at mackaysstores dot co dot uk I have 2 Servers - 1 has Automatic Daylight Saving on, the other has it off. Both Servers have same PHP version and O/S (NT4 Server). When I use this: echo gmdate("Y-m-d", mktime("last Sunday")); // gmdate it returns: 2003-03-30 on Server 1 and 2003-03-31 on Server 2 ------------------------------- when I use this: echo date("Y-m-d", mktime("last Sunday")); // no gmdate! it returns: 2003-03-31 on Server 1 and 2003-03-31 on Server 2 ------------------------------- When I use this: echo gmdate("Y-m-d", gmmktime("last Sunday")); // gmdate and gmtime! it returns: 2003-03-31 on Server 1 and 2003-03-30 on Server 2 ------------------------------- when I use this: echo date("Y-m-d", gmmktime("last Sunday")); // gmmktime! it returns: 2003-03-31 on Server 1 and 2003-03-30 on Server 2 So I have used every combination and cannot get both Servers to return the correct date. I need it to return 2003-03-30 on both Servers - as it should. p.s. I cannot just change the 'Automatic Daylight' configuration as I need it to run in over 250 seperate Servers (they may have different OS settings)! Cheers, Stuart ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=22976&edit=1