Является ли текущая эпоха Unix в PHP UTC? - PullRequest
2 голосов
/ 25 декабря 2011

Является ли текущая эпоха Unix в PHP UTC?Или это местное время?

Ответы [ 2 ]

5 голосов
/ 25 декабря 2011

Обычно эпоха Unix происходит в UTC независимо от языка программирования.

С http://en.wikipedia.org/wiki/Unix_time:

Эпоха Unix - это время 00:00:00 UTC 1 января 1970 года (или 1970-01-01T00: 00: 00Z ISO 8601).

1 голос
/ 28 января 2019

Эпоха UNIX - 01.01.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);
    }
}
...