代码之家  ›  专栏  ›  技术社区  ›  csirmazbendeguz

为什么datetimezone的getoffset()需要参数?

php
  •  0
  • csirmazbendeguz  · 技术社区  · 6 年前

    PHP的意义是什么? DateTimeZone::getOffset 's(时区偏移量) datetime 参数?

    <?php
    
    $tz = new DateTimeZone("Asia/Tokyo");
    
    var_dump($tz->getOffset(new DateTime())); // 32400
    var_dump($tz->getOffset(new DateTime('now', new DateTimeZone('Asia/Taipei')))); // 32400
    var_dump($tz->getOffset(new DateTime('now', new DateTimeZone('Europe/Budapest')))); // 32400
    var_dump($tz->getOffset(new DateTime('2000-01-01', new DateTimeZone('America/New_York')))); // 32400
    

    我是否遗漏了一些东西,或者参数根本不影响函数的输出?

    文档中提到函数计算参数的偏移量。这是什么意思?

    1 回复  |  直到 6 年前
        1
  •  1
  •   AndreKR    6 年前

    因为偏移量取决于日期。

    例如,在夏天 Europe/Budapest 有2小时的偏移(由于夏令时),在冬季为1小时:

    $tz = new DateTimeZone("Europe/Budapest");
    
    var_dump($tz->getOffset(new DateTime('2018-06-06', $tz))); // 7200
    var_dump($tz->getOffset(new DateTime('2018-01-06', $tz))); // 3600
    

    夏令时不是唯一的更改来源,请参见 Moscow time :

    $tz = new DateTimeZone("Europe/Moscow");
    
    var_dump($tz->getOffset(new DateTime('2010-01-01', $tz))); // 10800
    var_dump($tz->getOffset(new DateTime('2012-01-01', $tz))); // 14400
    var_dump($tz->getOffset(new DateTime('2015-01-01', $tz))); // 10800
    
    推荐文章