【问题标题】:Why does Australia/Brisbane (UTC+10) yield a time value less than the UTC?为什么澳大利亚/布里斯班 (UTC+10) 产生的时间值小于 UTC?
【发布时间】:2011-02-16 03:58:08
【问题描述】:

请随时在此处运行代码:http://codepad.org/SAOaOABn

代码:

<?php

$time = time();

echo date_default_timezone_get()."\n";
echo mktime( gmdate("H", $time), gmdate("i", $time), gmdate("s", $time), gmdate("m", $time), gmdate("d", $time), gmdate("Y", $time))."\n";

date_default_timezone_set('Australia/Brisbane');
echo date_default_timezone_get()."\n";
echo mktime( gmdate("H", $time), gmdate("i", $time), gmdate("s", $time), gmdate("m", $time), gmdate("d", $time), gmdate("Y", $time));

输出:

UTC
1297828288
Australia/Brisbane
1297792288

我的问题是,为什么澳大利亚/布里斯班 (UTC+10) 产生的时间值小于 UTC?

【问题讨论】:

    标签: php time timezone


    【解决方案1】:

    您是在告诉计算机您的时区是 UTC+10。然后当你说“请告诉我布里斯班 11:00 的 UTC 时间”时,你会得到 01:00 UTC。

    mktime 函数使用本地时间,而 gmdate 使用 UTC,因此您不会返回 UTC。如果您使用date 而不是gmdate,您将获得相同的时间。

    【讨论】:

    • Unix 时间戳是自 1970 年 1 月 1 日 (UTC) 以来经过的秒数。因此,您正在更改时区但不更改时间,然后将其转换为 UTC。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2022-01-05
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多