0

我需要使用 php 将日期和时间 (GMT) 转换为时间戳。以下代码显示了我当前正在使用的内容:

<?php
$date="2012-06-29 10:50";
$timestamp = strtotime($date);
echo $timestamp;
?>

但是,当我在在线转换器 (http://www.epochconverter.com) 中测试时间戳时,结果日期是 2012 年 6 月 29 日,格林威治标准时间 8:50 或 2 小时前。strtotime() 函数是否可能并不完全准确,而只是对时间的估计?如果是这样,我可以使用更好的方法来获取确切的时间吗?

谢谢。

4

1 回答 1

0

strtotime假设您正在转换服务器本地时间的字符串,因此如果服务器时区超出两个小时,则结果将是一样的。

手册中的评论提出了几个解决方案,您可以将 UTC 附加到您的日期:

$timestamp = strtotime($date.' UTC');

或者您可以更改脚本的默认时区(这将适用于所有其他时间函数!):

date_default_timezone_set('UTC');
$timestamp = strtotime($date);

作为最后一种选择,您可以尝试date_create_from_format使用它来指定字符串的确切格式:

$datetime = date_create_from_format('Y-m-d H:i', $date, new DateTimeZone('UTC'));

$timestamp = date_format($datetime, 'U');
// Alternatively (thanks Herbert) - 5.3+ only
$timestamp = date_timestamp_get($datetime);
于 2012-06-28T03:28:20.240 回答