【问题标题】:assistance with a timestamp php function帮助时间戳 php 函数
【发布时间】:2012-03-20 13:56:37
【问题描述】:

我需要将时间戳转换为 UTC-5

$offset 是用户的时区,值从 -12 到 12。$ds 是夏令时,如果开启,它将增加一个小时。我制作了这个函数,但我认为它会将 UTC-5 时间戳转换为基于用户时区的新时间戳……我需要反转该函数,以便它返回 UTC-5 中的时间戳。当然,问题远不止于此,但这就是我卡住的地方。有什么办法吗?

function input_date($timestamp)
{
    global $vbulletin;
    $timestamp = (int)$timestamp;

    if (strlen((string)$timestamp) == 10)
    {
        $hour = 3600.00;
        $offset = $vbulletin->userinfo['timezoneoffset'];//sample -8
        $ds = (int)$vbulletin->userinfo['dstonoff'];//DST values are 1 or 0
        $fluff = $hour*($offset+5.00);
        $timestamp = $timestamp+$fluff+($ds*$hour);

        return $timestamp;//return timestamp in UTC-5 format..
    }
    else
    {
        return 0;
    }
}

【问题讨论】:

  • 您是否可以选择使用 时区标识符 而不是偏移量 + DST 标志?时区标识符是指Asia/TokyoEurope/London 之类的名称。然后,您可以轻松地为此使用现有的 PHP 函数,而不是重新发明时间计算,这总是容易出错。

标签: php timezone timestamp


【解决方案1】:

哇...谈论重新发明轮子!而且在一个众所周知的难以正确处理(日期/时间操作)的领域中。

你见过DateTimeDateTimeZone 类吗?除了做基础数学之外,他们还将帮助您解决这个编程领域的特殊疯狂(每个县的 DST!闰年!)。

不过,我不得不问,你为什么要这样做?根据定义,UNIX 时间戳独立于时区、DST 等。它精确地定义为自给定参考日期以来经过的秒数,以及时间流逝(尽管有相对论效应;-) 在位置或立法者的特定特质方面是不变的。

也许如果您能更详细地描述您的实际目标是什么,那么我们或许可以提出一种更连贯的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多