0

date('Z') - 时区偏移量(以秒为单位)。UTC 以西的时区偏移量始终为负,UTC 以东的时区偏移量始终为正。

所以这是现在的偏移量(此时此刻)。

有什么方法可以在特定时间以秒为单位获取偏移量(例如:2012-02-17 12:00)。

我知道我可以使用 DateTime 类来实现这一点。但是是否可以仅使用 date() 来实现?

编辑:

如果服务器在多伦多并且是夏天 => date('Z') => -14400

如果服务器在多伦多,现在是冬天 => date('Z') => -18000

4

2 回答 2

4

使用带有日期的strtotime :

$getDate = '2012-02-17 12:00';
date('Z',strtotime($getDate));
于 2013-08-15T20:27:03.767 回答
1

您不能,因为您的日期时间字符串不包含任何 TZ 信息。如果您调用date('Z'),它将使用由设置的 TZdate_default_timezone_set()或 .inidate.timezone默认值。

换个角度来看,如果你有一个时间字符串说“现在是凌晨 3 点”,那么你不知道现在凌晨 3 点在世界上的什么地方。如果我告诉你,那将是 GMT-6,因为我在 CST,但在萨斯喀彻温省,根本不遵守夏令时,所以我的 CST 与其他人的 CST 不同。

但你不知道我在萨斯喀彻温省。如果我说现在是凌晨 3 点,但实际上我在日本,那将是一个完全不同的时区,但是您绝对无法仅通过给出“凌晨 3 点”来判断我在哪个时区。

充其量您可以将服务器的本地时间与给定的时间字符串进行比较,并从中找出一个偏移量。例如,我说现在是凌晨 3 点,你知道现在是凌晨 5 点,所以很明显我在一个比你晚 2 小时的地方。

于 2013-08-15T20:29:35.780 回答