PHP UTC中的当前Unix时代?或者是当地时间?
答案 0 :(得分:5)
通常,无论编程语言如何,Unix纪元都是UTC。
来自http://en.wikipedia.org/wiki/Unix_time:
Unix纪元是1970年1月1日00:00:00 UTC(或1970-01-01T00:00:00Z ISO 8601)的时间。
答案 1 :(得分:1)
正如Trott所说,UNIX时代是1/1/1970 UTC,但是PHP时代是您当前的时区。我使用此脚本将其打印出来。当我使用此脚本打印出来时,它总是在我当前的时区。
<?php
date_default_timezone_set("US/Pacific");
print_r(array(
'$argv' => $argv,
'strtotime' => strtotime($argv[1]),
'date' => date("H:i:s m/d/Y", strtotime($argv[1])),
));
这是指向PHP源strtotime()的链接,您可以在获取时区的函数中进行阅读。
PHP_FUNCTION(strtotime)
{
zend_string *times;
int error1, error2;
timelib_error_container *error;
zend_long preset_ts = 0, ts;
timelib_time *t, *now;
timelib_tzinfo *tzi;
ZEND_PARSE_PARAMETERS_START(1, 2)
Z_PARAM_STR(times)
Z_PARAM_OPTIONAL
Z_PARAM_LONG(preset_ts)
ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
tzi = get_timezone_info();
now = timelib_time_ctor();
now->tz_info = tzi;
now->zone_type = TIMELIB_ZONETYPE_ID;
timelib_unixtime2local(now,
(ZEND_NUM_ARGS() == 2) ? (timelib_sll) preset_ts : (timelib_sll) time(NULL));
t = timelib_strtotime(ZSTR_VAL(times), ZSTR_LEN(times), &error,
DATE_TIMEZONEDB, php_date_parse_tzfile_wrapper);
error1 = error->error_count;
timelib_error_container_dtor(error);
timelib_fill_holes(t, now, TIMELIB_NO_CLONE);
timelib_update_ts(t, tzi);
ts = timelib_date_to_int(t, &error2);
timelib_time_dtor(now);
timelib_time_dtor(t);
if (error1 || error2) {
RETURN_FALSE;
} else {
RETURN_LONG(ts);
}
}