我有时间/日期问题。我试图比较当前的日期和时间,日期/时间在一天的开始(午夜)。目前的时间是:
echo date('d M, Y H:i:s e')."<br>";如预期:“2014年10月7日12:51:25美国/洛杉矶”
为了得到今天午夜的时间,我有:
echo date('d M, Y H:i:s e',strtotime(date('D, d M, Y')))."<br>";返回如下:“2014年10月7日20:14:00美国/洛杉矶”
晚上10点(晚上8点)很奇怪,因为UTC不是应该是08:00而不是20:00吗?那14分钟呢?
有人能帮我弄明白这里发生了什么吗?我遗漏了什么?
非常感谢
发布于 2014-10-07 20:14:48
您正在向strtotime函数中发送一个令人困惑的日期字符串。
如果你尝试这个:
echo date('d M, Y H:i:s e').'<br>';
echo date('d M, Y H:i:s e',strtotime(date('Y-m-d H:i:s')))."<br>";您将得到一致的结果,因为Y-m-d H:i:s是strtotime使用的更好的格式。
函数将被赋予一个包含英文日期格式的字符串,将尝试将该格式解析为Unix时间戳(自1970年1月1日以来的秒数00:00:00 UTC),相对于现在给出的时间戳,或者如果现在没有提供当前时间。
和
为了避免潜在的模糊性,最好在可能的情况下使用ISO 8601 (YYYY DD)日期或日期时间::createFromFormat()
为了得到午夜你想要的时间(我不建议你这么做):
echo date('d M, Y H:i:s e',strtotime(date('Y-m-d')))."<br>";您可以轻松地输出一个“永恒的”日期,并直接在date函数中插入一个静态00:00:00:
echo date('d M, Y 00:00:00 e')."<br>";但我喜欢用 objects
$midnight = new DateTime('today');
echo $midnight->format('d M, Y H:i:s e').'<br>';
// Output from sandbox is: 07 Oct, 2014 00:00:00 US/Pacific<br>更好的是,您可以很容易地将它们进行本地比较,而无需进行任何额外的操作:
$now = new DateTime('now'); // 2014-10-07 12:34:56
$midnight = new DateTime('today'); // 2014-10-07 00:00:00
var_dump($now > $midnight); // true
var_dump($now < $midnight); // false
var_dump($now === $midnight); // false
var_dump($now !== $midnight); // true发布于 2014-10-07 20:18:02
date('Y-m-d H:i:s')给你现在的时间,而不是午夜。尝试使用下一段代码:
echo date('d M, Y H:i:s e',strtotime(date('Y-m-d 00:00:00')))."<br>";“00:00”的时间定在午夜。
您可以使用这个简单的变体:
echo date('d M, Y 00:00:00 e')https://stackoverflow.com/questions/26244405
复制相似问题