1

我有以下代码,它可以工作,但是是否有“更清洁”的方式,也许代码更少?

$today = new DateTime();
$utc_today = date('Y-m-d', $today->format('U'));
$new_date = new DateTime($utc_today, new DateTimeZone('America/New_York'));
$new_date->add(new DateInterval('P3D'));
echo $new_date->format('m-d-Y');
4

1 回答 1

3

如果您只需要在 EST 中表达现在的时间,再加上 3 天,那么您做的工作太多了。您只需要一个语句:

$date = new DateTime("3 days", new DateTimeZone('America/New_York'));
echo $date->format("Y-m-d H:i:s\n");

如果您从任意 UTC 时间戳开始,那么您需要大约 3 行代码,而不仅仅是一行:

// let us assume $inputTimestamp is the UTC time you want to play with
$date = new DateTime(null, new DateTimeZone('America/New_York'));
$date->setTimestamp($inputTimestamp);
$date->modify("3 days");
echo $date->format("Y-m-d H:i:s\n");

或者,您可以在时间戳中添加 3 天的秒数并保存一些代码,但这样可读性会降低:

$date = new DateTime(null, new DateTimeZone('America/New_York'));
$date->setTimestamp($inputTimestamp + (3*24*60*60) );
echo $date->format("Y-m-d H:i:s\n");

对于日期/时间操作,我发现 PHP相对格式文档非常有用。绝对值得回顾。

于 2012-11-14T15:05:06.620 回答