今天午夜获得时间戳?

use*_*398 112 php time timestamp

今天午夜我怎样才能在php中获取时间戳.说这是星期一下午5点,我希望周一(今天)午夜(上午12点)的时间戳已经发生.

谢谢

hak*_*kre 218

$timestamp = strtotime('today midnight');
Run Code Online (Sandbox Code Playgroud)

您可能想看看PHP提供的内容:http://php.net/datetime

  • @SamHuckaby:更简单:`$ timestamp = strtotime('今天');`是午夜.但*pssst*上面的那个看起来更酷,作为问题的答案;) (49认同)
  • 我不得不承认,这比我的回答更容易阅读.很好. (6认同)
  • 请记住,这将生成 PHP 服务器时区的午夜,*不是 UTC+0*!要获得 UTC+0,您可以使用 `strtotime('today+00:00')`。 (3认同)
  • @AlwinAugustin:你应该考虑改变你的措辞.午夜技术上是两天之间.所以有点"今天不再有了".另外:今天的Midgnight(根据定义)是今天开始的(就在之前).你可能意味着*今天中午之后的下一个午夜*. (2认同)

Joe*_*yer 66

我认为您应该使用新的PHP DateTime对象,因为它没有问题超出strtotime()具有的32位限制.这是一个如何在午夜获得今天约会的例子.

$today = new DateTime();
$today->setTime(0,0);
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是PHP 5.4或更高版本,则可以这样做:

$today = (new DateTime())->setTime(0,0);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用它echo $today->format('Y-m-d');来获取您希望对象输出的格式.

PHP DateTime对象

  • 我也更喜欢使用新的DateTime对象.如果你将这个答案与@ hakr结合起来,你会得到:`new DateTime('today midnight')`,这使得意图更加明确(但这当然是品味的问题). (13认同)

小智 17

今天午夜.简单.

$stamp = mktime(0, 0, 0);
Run Code Online (Sandbox Code Playgroud)


Wil*_*ken 7

您正在计算最近的天体事件的时间,在该事件中,太阳已经从您的脚下直接经过,已针对当地的正午惯例进行了调整,还可能进行了调整,以使人们下班回家后剩下足够的日光;以及其他政治考虑。

令人生畏的对吧?实际上,这是一个普遍的问题,但是完整的答案取决于位置:

$zone = new \DateTimeZone('America/New_York'); // Or your own definition of “here”
$todayStart = new \DateTime('today midnight', $zone);
$timestamp = $todayStart->getTimestamp();
Run Code Online (Sandbox Code Playgroud)

https://secure.php.net/manual/en/timezones.php列出了“此处”的可能定义。


Sam*_*aby 5

$today_at_midnight = strtotime(date("Ymd"));
Run Code Online (Sandbox Code Playgroud)

应该给你你想要的。

说明

我所做的是使用PHP的date函数获取今天的日期,而没有任何时间参考,然后将其传递给“ string to time”功能,该功能将日期和时间转换为纪元时间戳。如果没有时间,则以当天的第一秒为准。

参考:日期函数:http : //php.net/manual/en/function.date.php

时间字符串:http : //us2.php.net/manual/en/function.strtotime.php


asp*_*ile 5

2020 年 4 月 19 日更新的答案

我们可以这样做:

$today = date('Y-m-d 00:00:00');