gpt4 book ai didi

php - 在午夜获取今天的时间戳?

转载 作者:IT老高 更新时间:2023-10-28 11:49:17 25 4
gpt4 key购买 nike

我将如何在 php 中获取今天午夜的时间戳。假设现在是星期一下午 5 点,我想要星期一(今天)午夜(上午 12 点)的时间戳。

谢谢

最佳答案

$timestamp = strtotime('today midnight');

或通过日期时间:

$date = new DateTime('today midnight');
// or: $date = date_create('today midnight');
$timestamp = $date->getTimestamp();

然后也许是不可变的:

$midnight = new DateTimeImmutable('today midnight');
// or: $midnight = date_create_immutable('today midnight');
$timestampOfMidnight = $midnight->getTimestamp();
  1. 即在 default timezone 中。
  2. 剧透:仅“midnight”或“today”返回相同。
  3. 添加时区,例如“UTC today ”,永远拥有它。
  4. 剧透 #2:UTC 问候风格:“midnightZ
  5. 历史记录: midnight PHP 5.1.2(2006 年 1 月)起, today PHP 4.3.1(2003 年 2 月)起

更多例子:

鉴于时间UTC 2020-01-01 00:00:00:

UTC time is ............: [red   ] 1577836800

调用 strtotime($) 时,结果为:

today midnight .........: [pink  ] 1577833200
midnight ...............: [pink ] 1577833200
today ..................: [pink ] 1577833200
tomorrow ...............: [green ] 1577919600
UTC today ..............: [red ] 1577836800
today Z ................: [red ] 1577836800
Asia/Shanghai today ....: [lime ] 1577808000
Asia/Shanghai ..........: [blue ] 1577811600
HKST today .............: [copper] 1577804400

在线演示:https://3v4l.org/KWFJl


PHP 文档:

  • Relative Formats 页面上,查看基于日的表示法表。这些格式适用于 strtotime() DateTime date_create()

  • 您可能想看看 PHP 提供的更多功能:https://php.net/datetime - PHP 中与日期时间相关的函数和对象的入口页面,以及指向其他与日期时间相关的扩展的链接。


注意:虽然“midnight”在技术上两天之间,但这里是“today”(一天的开始)和 PHP 的 strtotime

讨论:

到目前为止,答案 strtotime("today midnight")strtotime("midnight today") 是 PHP 的一个完整且听起来不错的答案,它可能看起来有点冗长,因为 strtotime("midnight")strtotime("today") 返回相同的结果。

但即使是更冗长也不总是能立即回答这个问题,如果它是关于一天开始的午夜或一天结束的午夜,即使在今天也被给出为语境。阅读“今天午夜”时,我们可能会想到一天的开始,但这是一个假设,并不精确,也许不可能。 Wikipedia:

Though there is no global unanimity on the issue, most often midnight is considered the start of a new day and is associated with the hour 00:00.

与这个编程问题比较:

  • 鉴于午夜是一个时间转换
  • 要求单个 UNIX 时间戳时
  • 那就没有答案了

(它将在两个 UNIX 时间戳之间,因此您将获取两个时间戳并描述两者的含义,这不会回答问题,因为它要求一个时间戳)。

由于这种不匹配以及 UNIX 时间引用日期/时间的方式,这不容易完全解决。

让我们用众所周知的数字 24 小时时钟来表示小时和分钟并表示午夜(更精确吗?):

$midnight = strtotime("today 00:00");

或结束一天:

$midnight = strtotime("today 24:00");

(注意:显示为第二天的开始)

或者12小时制,也可以用来给出今天午夜UNIX时间戳:

$midnight = strtotime("12:00 a.m.");

(注意:strtotime() 不支持 “午夜 12 点” 表示法)

转换时间(如 Midnight)在时钟上映射可能会导致混淆,使用类似于“midnight”的 12 小时制时钟甚至会变得更加明显midday(在 PHP 中不能作为相对日期/时间格式,但“noon”)在技术上介于 again 之间(现在在中午的两个完整日期之间,或在第一个日期之间和后半天)。

这样一来,代码在 24 小时内可能不会被很好地接受,或者只是写出“today midnight”。

您的里程可能会有所不同。

这有点与时钟时间一致。来自 Wikipedia Midnight :

"Midnight is the transition time from one day to the next – the moment when the date changes, on the local official clock time for any particular jurisdiction. By clock time, midnight is the opposite of noon, differing from it by 12 hours. [bold by me]"

并从 Wikipedia 12-hour clock :

"It is not always clear what times "12:00 a.m." and "12:00 p.m." denote. From the Latin words meridies (midday), ante (before) and post (after), the term ante meridiem (a.m.) means before midday and post meridiem (p.m.) means after midday. Since "noon" (midday, meridies (m.)) is neither before nor after itself, the terms a.m. and p.m. do not apply. Although "12 m." was suggested as a way to indicate noon, this is seldom done and also does not resolve the question of how to indicate midnight."

关于php - 在午夜获取今天的时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13129817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com