我正在查看PHP中的date_sunset函数,遇到了一个我觉得有点奇怪的问题。我有这段代码:
$sunset = date_sunset(mktime(0, 0, 0, 5, 14, 2010),
$format, // Format
55.596041, // Latitude
12.992495, // Longitude
90, // Zenith
2 // GMT Offset
);
对于三种不同的格式,这会给我:
SUNFUNCS_RET_STRING 21:05
SUNFUNCS_RET_DOUBLE 21.095732016315
SUNFUNCS_RET_TIMESTAMP 1273863944 // H:i:s O -> 19:05:44 +0000
为什么时间戳格式忽略gmt偏移量?是应该是那样的?如果是这样的话背后的原因是什么?
答案 0 :(得分:3)
时间戳不包含任何时区数据。它们是自大纪元以来的秒数,即1970年1月1日00:00:00
答案 1 :(得分:1)
date_sunset(,SUNFUNCS_RET_TIMESTAMP ,,,,)没有忽略偏移量,你用来格式化时间戳值的函数是(即时区设置为utc + 0),例如
$sunset = date_sunset(mktime(0, 0, 0, 5, 14, 2010),
SUNFUNCS_RET_TIMESTAMP, // Format
55.596041, // Latitude
12.992495, // Longitude
90, // Zenith
2 // GMT Offset
);
date_default_timezone_set('UTC');
echo date('H:i:s O', $sunset), "\n";
date_default_timezone_set('Europe/Berlin');
echo date('H:i:s O', $sunset), "\n";
date_default_timezone_set('America/New_York');
echo date('H:i:s O', $sunset), "\n";
打印
19:06:07 +0000
21:06:07 +0200
15:06:07 -0400