|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2013-12-10 18:09 UTC] mfaust at usiwireless dot com
Description: ------------ --- From manual page: http://www.php.net/function.strtotime --- date_default_timezone_set('UTC'); $timestamp = mktime(0,0,0,11,1,2014); strtotime('4 thursdays', $timestamp) does not return the same timestamp as strtotime('first thursday + 3 weeks', $timestamp) The first call returns a timestamp indicating a time of 6am (we are in CST) and the second returns a timestamp indicating 12am. Test script: --------------- //The server timezone is America/Chicago $timestamp = mktime(0,0,0,11,1,2014); echo strtotime('4 thursdays', $timestamp) . "\n"; strtotime('first thursday + 3 weeks', $timestamp) . "\n"; Expected result: ---------------- Both should return the same timestamp indicating 12:00 am. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 04:00:01 2025 UTC |
Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If the script requires a database to demonstrate the issue, please make sure it creates all necessary tables, stored procedures etc. Please avoid embedding huge scripts into the report. The following works just fine here: <?php date_default_timezone_set("America/Chicago"); $timestamp = mktime(0,0,0,11,1,2014); $a = strtotime('4 thursdays', $timestamp); $b = strtotime('first thursday + 3 weeks', $timestamp); echo date(DateTime::ISO8601, $a), "\n"; echo date(DateTime::ISO8601, $b), "\n"; ?> outputs: 2014-11-27T00:00:00-0600 2014-11-27T00:00:00-0600 This is with PHP 5.4.24This still occurs on PHP 5.6.4 <?php echo date_default_timezone_get() . "\n; date_default_timezone_set('UTC'); $timestamp = mktime(0,0,0,11,1,2014); echo strtotime('4 thursdays', $timestamp) . "\n"; echo strtotime('first thursday + 3 weeks', $timestamp) . "\n"; ?> Output: America/Chicago 1417068000 1417046400