【问题标题】:converting timestamp to local time with PHP使用 PHP 将时间戳转换为本地时间
【发布时间】:2019-03-26 06:22:01
【问题描述】:

我正在尝试使用 PHP 从 mySQL 数据库获取本地时间的时间戳,但我遇到了错误,我使用的原始代码是这样的,显然返回了 UTC 时间:

$timestamp = strtotime($row['created']);
$dt = date('d/m/Y H:i', $timestamp);

现在搜索以前的答案,我发现了这段代码:

$date = /* SELECT date FROM database */;
$usersTimezone = new DateTimeZone('America/Vancouver');
$l10nDate = new DateTime($date);
$l10nDate->setTimeZone($usersTimezone);
echo $l10nDate->format('Y-m-d H:i:s');

但我无法让它工作......我尝试添加

date_default_timezone_set('America/Vancouver'); 

也是,但它也不起作用......我只做了最小的更改,因为我想将它保存在一个变量中而不是回显它。 另外,查看先前答案中的信息,我不知道是否可以转换任何 UTC 时间戳,或者我必须在之前的时区中插入记录才能稍后将其转换回来。

感谢您的宝贵时间。

【问题讨论】:

    标签: php timezone timestamp


    【解决方案1】:

    默认情况下DateTime::construct 使用您的本地时区。但是您的时间是 UTC,所以您需要告诉构造函数,然后 然后 修改时区:

    $date = '2018-10-13 00:00:00';
    $l10nDate = new DateTime($date, new DateTimeZone('UTC'));
    $l10nDate->setTimeZone(new DateTimeZone('America/Vancouver'));
    echo $l10nDate->format('Y-m-d H:i:s');
    

    输出

    2018-10-12 17:00:00
    

    【讨论】:

    • 非常感谢!它工作得很好。我遇到的另一个错误是因为我想使用我一直用来从服务器获取日期的同一行来设置 $date 值。所以使用 $date = strtotime($row['created']);是不可能转换的!再次感谢,对于我不会说那么多英语的我来说,除了工作,答案很明确。
    • 不用担心。我很高兴能帮上忙。
    猜你喜欢
    • 2019-08-15
    • 2016-01-14
    • 2015-04-20
    • 2020-07-26
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    相关资源
    最近更新 更多