[英]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.