有人可以告诉我为什么strtotime()
似乎要加1天?这似乎只发生在下午晚些时候(比如7点或8点),否则说的是正确的一天。
echo date('m/d/Y h:i:s a', time());
输出:
12/21/2015 08:34:43 pm
echo gmdate('l, F jS, Y', strtotime(date('m/d/Y h:i:s a', time())));
输出:
2015年12月22日星期二
我想要上面的输出,但是,我想要今天的日期(21日而不是22日)。
答案 0 :(得分:2)
使用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_default_timezone_set
或在php.ini
中配置了((token)(.*\n)*.*(readonly))|((readonly)(.*\n)*.*(token))
,这一点非常重要。
答案 1 :(得分:0)
您的代码中的详细信息......
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');
......
答案 2 :(得分:0)
决定最终使用:
$date = new DateTime(date('Y-m-d'), new DateTimeZone('America/New_York'));
$timestamp = $date->format('U');
$date = gmdate('l, F jS, Y', $timestamp);
基于亚历山大的评论。