php getdate() 与日期()

标签 php date getdate

理论问题。

想象一下这种情况。我需要获取今天的日期和时间(不是现在,而是今天——一天的开始)。我可以使用以下任一代码来完成:

$now = time();
$today = date('Y-m-d H:i:s', mktime(0, 0, 0, date("m", $now), date("d", $now), date("Y", $now)));

或者这个:

$now = getdate();
$today = date('Y-m-d H:i:s', mktime(0, 0, 0, $now['mon'], $now['mday'], $now['year']));

在我见过的大多数示例中,都使用了第一种方式。问题很简单:为什么?第一个使用更多的 3 个函数调用来获取月、日和年。

最佳答案

这两个选项都非常糟糕——如果您试图将午夜的当前日期作为格式化字符串获取,它非常简单:

date('Y-m-d') . ' 00:00:00';

或者,如果你想更明确一点,

date('Y-m-d H:i:s', strtotime('today midnight'));

不需要做那些古怪的 mktime 事情。编写该代码的人不知道他们在做什么和/或者是复制粘贴/ cargo 崇拜开发人员。如果你真的在“大多数例子”中看到这一点,那么和你一起出去玩的人深感不安,你可能应该停止和他们一起出去玩。

mktime 所做的唯一有趣的事情是尝试使用本地时区。如果您的工作对时区敏感,并且您使用的是 PHP 5.3 或更高版本,请考虑使用 DateTimeDateTimeZone反而。来自 PHP 交互式提示的演示:

php > $utc = new DateTimeZone('UTC');
php > $pdt = new DateTimeZone('America/Los_Angeles');
php > $midnight_utc = new DateTime('today midnight', $utc);
php > $midnight_utc->setTimeZone($pdt);
php > echo $midnight_utc->format('Y-m-d H:i:s');
2011-04-08 17:00:00

(目前UTC为9号,PDT为8号)

关于php getdate() 与日期(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5602858/

相关文章:

java - 将 shortdate 转换为 LocalDate

Python - 递归日期排序算法

java - JDBC ResultSet : I need a getDateTime, 但只有 getDate 和 getTimeStamp

javascript - 用折线连接多个标记

php - 仅获取表中重复项的最小值

php - 如何根据GPS坐标获取本地时间?

Java日期计算

javascript - 为什么 Javascript 的 Date.getDate() .setDate() 行为如此不可预测?

sql-server-2005 - SQL Getdate 的精度?

php - mysql_fetch_array 接收 3 行,但返回 4