PHP日期()与时区

所以我检查了supported time zones in PHP的列表,我想知道如何将它们包含在date()函数中?谢谢!

所以我检查了supported time zones in PHP的列表,我想知道如何将它们包含在date()函数中?谢谢!

我不想要一个默认的时区,每个用户都有他们的时区存储在数据库中,我采取用户的时区并使用它。How?我知道如何从数据库中获取它,而不是如何使用它,虽然

168

对于这样的任务,你真的应该使用 PHP 的 DateTime 类。请忽略所有建议你使用 date()或 date_set_time_zone 的答案,它只是坏的和过时的。

我将使用伪代码进行演示,因此请尝试调整代码以满足您的需求。

假设变量 $tz 包含有效时区的字符串名称,变量 $timestamp 包含您希望根据时区格式化的时间戳,代码如下所示:

$tz = 'Europe/London';
$timestamp = time();
$dt = new DateTime("now", new DateTimeZone($tz)); //first argument "must" be a string
$dt->setTimestamp($timestamp); //adjust the object to correct timestamp
echo $dt->format('d.m.Y, H:i:s');

DateTime 类是强大的,并掌握它的所有功能-你应该投入一些你的时间在 php.net 上阅读它。要完全回答你的问题-是的,你可以动态调整时区参数(在每次迭代时从 db 读取,你可以创建一个新的 DateTimeZone()对象)。

42

如果我理解正确,您需要先设置时区:

date_default_timezone_set('UTC');

和比你可以使用日期功能:

// Prints something like: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');
19

请改用DateTime class,因为它支持时区。与date()等效的 DateTime 是DateTime::format

DateTime 的一个非常有用的包装是Carbon-绝对给它看一下。

您将希望以 UTC 格式存储在数据库中,并在应用程序级别进行转换。

17

answer above导致我跳过一些箍 / gotchas,所以只是发布为我工作的更清洁的代码:

$dt = new DateTime();
$dt->setTimezone(new DateTimeZone('America/New_York'));
$dt->setTimestamp(123456789);
echo $dt->format('F j, Y @ G:i');

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(841)
如何在 C#中计算XIRR公式
上一篇
excel在计算单元格的数量时指向单元格
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(40条)