强制 php strtotime 使用 UTC

发布于 2024-12-12 16:14:31 字数 234 浏览 0 评论 0原文

我已经看到了一些与此相关的问题,但没有明确的答案... strtotime() 在将字符串转换为 unix 时间戳时将使用为 PHP 设置的默认时区。

但是,我想将字符串转换为 UTC 格式的 unix 时间戳。既然没有参数可以做到这一点,那么如何做到这一点呢?

我尝试转换的字符串是:2011-10-27T20:23:39,它已经是 UTC 格式了。我想将其表示为 UTC 中的 unix 时间戳。

谢谢

I've seen a few questions about this but not a clear answer... strtotime() will use the default timezone set for PHP when converting the string to a unix timestamp.

However, I want to convert a string to unix timestamp in UTC. Since there is no parameter for doing so, how can this be done?

The string I'm trying to convert is: 2011-10-27T20:23:39, which is already in UTC. I want to represent that as a unix timestamp also in UTC.

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

多孤肩上扛 2024-12-19 16:14:33

其他两个答案都很好。由于我有同样的问题,我想提供第三种选择。

$utc = new DateTimeZone('UTC');
$dt = new DateTime('2011-10-27T20:23:39', $utc);
var_dump($dt->format('U'));

给出string(10)“1319747019”

Both other answers are really fine. As I have the same issue, I want to offer a third option.

$utc = new DateTimeZone('UTC');
$dt = new DateTime('2011-10-27T20:23:39', $utc);
var_dump($dt->format('U'));

gives string(10) "1319747019"

找个人就嫁了吧 2024-12-19 16:14:32

我意识到这个问题很老了,但我找到了另一个可能有帮助的选择。
您可以将时区指定为传递给 strtotime 的字符串的一部分,而不是设置然后恢复 php 的时区,如下所示:

echo date_default_timezone_get();
output: America/Chicago

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39'));
output: 2011-10-28 01:23:39

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 America/Chicago'));
output: 2011-10-28 01:23:39

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 UTC'));
output 2011-10-27 20:23:39

注意:我使用的是 PHP 5.5.9,但这应该适用于任何 php 版本。

I realize this question is very old, but I found another option that can be helpful.
Instead of setting and then reverting php's time zone, you can specify the timezone as a part of the string you pass to strtotime like so:

echo date_default_timezone_get();
output: America/Chicago

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39'));
output: 2011-10-28 01:23:39

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 America/Chicago'));
output: 2011-10-28 01:23:39

echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 UTC'));
output 2011-10-27 20:23:39

Note: I am on PHP 5.5.9, but this should work in any php version.

蝶…霜飞 2024-12-19 16:14:32

在进行 strtotime 调用之前设置系统默认时区:

date_default_timezone_set('UTC');
echo strtotime('2011-10-27T20:23:39')."\n";

// Proof:
print_r(getdate(strtotime('2011-10-27T20:23:39')));

// IMPORTANT: It's possible that you will want to
// restore the previous system timezone value here.
// It would need to have been saved with
// date_default_timezone_get().

查看实际操作

Set the system default timezone before making the strtotime call:

date_default_timezone_set('UTC');
echo strtotime('2011-10-27T20:23:39')."\n";

// Proof:
print_r(getdate(strtotime('2011-10-27T20:23:39')));

// IMPORTANT: It's possible that you will want to
// restore the previous system timezone value here.
// It would need to have been saved with
// date_default_timezone_get().

See it in action.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文