簡體   English   中英

strtotime()增加了額外的一天

[英]strtotime() Is Adding An Extra Day

誰能告訴我為什么strtotime()似乎要增加1天? 這似乎只發生在下午晚些時候(大約晚上7點或晚上8點),否則表示正確的一天。

echo date('m/d/Y h:i:s a', time());

輸出:

2015/12/21下午08:34:43

echo gmdate('l, F jS, Y', strtotime(date('m/d/Y h:i:s a', time())));

輸出:

2015年12月22日,星期二

我想要上面的輸出,但是,我想要今天的日期(21日而不是22日)。

使用date代替gmdate

您正在使用gmdate()來獲取UTC日期。 該問題僅在下午/晚上晚些時候發生,因為在那個時候確實是 UTC時間的第二天。

您也做了很多工作-您可以將這行代碼簡化為:

// echo gmdate('l, F jS, Y', strtotime(date('m/d/Y h:i:s a', time())));
echo date('l, F jS, Y');

否則,您將根據當前時間戳根據時間字符串創建時間戳。 您可以只將第二個參數date保留為空,並假定當前時間為“ now”。

確保您在某處調用date_default_timezone_set或在php.ini配置也很重要。

您的代碼中的這個細節...

echo gmdate('l, F jS, Y', strtotime(date('m/d/Y h:i:s a', time())));

(=“ gmdate”)將始終返回格林威治標准時間(GMT),即倫敦/英國。

所以將其更改為date(....

並添加date_default_timezone_set('America/New_York'); 無論如何...

決定最終使用:

$date = new DateTime(date('Y-m-d'), new DateTimeZone('America/New_York'));
$timestamp = $date->format('U');
$date = gmdate('l, F jS, Y', $timestamp);

根據亞歷山大的評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM