【问题标题】:Is it possible to create a date string, from a timestamp and a timezone offset?是否可以从时间戳和时区偏移量创建日期字符串?
【发布时间】:2011-07-01 03:50:26
【问题描述】:

所有日期/时间扩展均基于时区字符串,例如“Europe/Amsterdam”。

我向用户显示的下拉菜单中每个时区偏移都有一个选项,例如:“(UTC -3:00) Argentina, Brazil, French Guiana, Uruguay”

我认为向他展示世界上所有国家/地区的列表是不合适的,因为唯一重要的是时区偏移。

是否可以从“-2”(作为时区偏移)之类的内容创建本地化日期对象或日期字符串??

答案:date('Y-m-d h:i:s', $unix_timestamp + $offset * 60 * 60)

【问题讨论】:

    标签: php date localization timezone


    【解决方案1】:

    您可以使用 mktime 为日期函数提供第二个参数。 像这样:

    var_dump($endDate = date('Y-m-d h:i:s', mktime(0-2, 0, 0, 2, 1, 2011)));

    或者像这样使用datetime class

    $date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
    echo $date->format('Y-m-d H:i:sP') . "\n";
    

    date_default_timezone_set('Europe/Bucharest');
    # equivalent of GMT since Europe/Bucharest is +2 , we feed -2 for the hour
    var_dump($endDate = date('Y-m-d h:i:s', mktime(date('h')-2, date('i'), date('s'), date('d'), date('m'), date('Y'))));
    # equivalent of GMT+1 since Europe/Bucharest is +2 we feed -1 for the hour
    var_dump($endDate = date('Y-m-d h:i:s', mktime(date('h')-1, date('i'), date('s'), date('d'), date('m'), date('Y'))));
    

    您也可以按小时输入 +3,将欧洲/布加勒斯特作为默认时区 +3 将给出 GMT +5,您也可以设置默认时区欧洲/伦敦女巫相当于 GMT0,然后用户发送给您+2 你会用 +2 来喂 mktime,女巫会给你相当于 GMT+2 europe/bucharest 的时间。

    【讨论】:

    • 我说我没有时区字符串。用户选择时区偏移量,如“-2”或“+3”。我需要用它来建立日期。
    • 看到编辑,你显然不明白发生了什么
    • 好吧,mktime 让我很困惑,因为我想直接使用 unix 时间戳。现在我意识到我可以这样做:date('Y-m-d h:i:s', $timestamp + $offset * 60*60)。谢谢
    • 是的,你也可以这样使用它,我想它也会比我的例子快一点。
    【解决方案2】:

    date('Y-m-d h:i:s', $unix_timestamp + $offset * 60 * 60)

    【讨论】:

      猜你喜欢
      • 2020-02-17
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 2018-02-02
      • 2010-10-17
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      相关资源
      最近更新 更多