【问题标题】:Set timezone when using strftime()使用 strftime() 时设置时区
【发布时间】:2014-11-16 09:04:21
【问题描述】:

在使用strftime() 转换日期时间对象时,我在显示正确的时区偏移时遇到了一些问题

这是我正在使用的对象(名称:$match_dateobject):

DateTime Object
(
    [date] => 2014-09-17 10:45:00
    [timezone_type] => 1
    [timezone] => -08:00
)

我想以以下格式显示此内容,调整为马德里的时区 (GMT+2) 并使用荷兰的日期和月份名称:“Wednesday 17 September 20:45”

这适用于英文版:

$match_dateobject->setTimezone(new DateTimeZone('Europe/Madrid'));
echo $match_dateobject->format('l j F H:i');

=> Result: Wednesday 17 September 20:45

但是当我用 strftime() 翻译日期/月份名称时,时区会被忽略:

$match_dateobject->setTimezone(new DateTimeZone('Europe/Madrid'));
$timestamp = $match_dateobject->format('U');
setlocale(LC_TIME, 'nl_NL.UTF-8');
echo strftime("%A %e %B %G %H:%M", $timestamp );

=> Result: woensdag 17 september 2014 18:45

请注意,它显示的是默认的 GMT 时区,而不是欧洲/马德里 (GMT+2)。

有没有办法在使用 strftime() 时设置时区?

【问题讨论】:

    标签: php date datetime


    【解决方案1】:

    是的,

     date_default_timezone_set('Europe/Madrid');
    

    【讨论】:

    • 如果我需要获取多个时区的时间怎么办。
    【解决方案2】:

    只需添加 1 个函数 date_default_timezone_set();在其中传递像“America/New_York”这样的时区,您可以在https://www.w3schools.com/php/php_ref_timezones.asp找到您的时区

    date_default_timezone_set("America/New_York");
    echo strftime("%A %e %B %G %H:%M", time() );
    

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 2015-09-26
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      相关资源
      最近更新 更多