代码之家  ›  专栏  ›  技术社区  ›  Prafulla Kumar Sahu umang naik

如何使数据格式在所有环境中保持一致

  •  0
  • Prafulla Kumar Sahu umang naik  · 技术社区  · 4 年前

    我使用的是PHP7.3。

    我正在尝试格式化 strtotime() 格式为ISO格式,但结果取系统时区,导致不同环境下的结果不一致。

    $date = date('Y-m-d\TH:i:s'.substr((string)microtime(), 1, 4).'\Z',1585526400);
    

    在phpfiddle中,输出是 2020-03-30T00:00:00.475Z 2020-03-30T05:30:00.415Z 在服务器上就是这样 2020-03-30T05:00:00.415Z .

    $date = date(DATE_ISO8601, 1585526400);
    

    PHPFIDLE输出为 2020-03-30T00:00:00+0000 ,本地 2020-03-30T05:30:00+0530 在服务器中 2020-03-30T05:00:00+0500

    我怎样才能使它保持一致?

    2 回复  |  直到 4 年前
        1
  •  2
  •   Konstantin Bogomolov    4 年前

    您可以显式设置时区。示例代码段:

    $date = new DateTime();
    $date->setTimezone(new DateTimeZone('UTC'));
    $date->setTimestamp(1585526400);
    echo $date->format('Y-m-d\TH:i:s');
    
        2
  •  2
  •   MAK    4 年前

    您可以通过将获取日期和时间时的时区设置为:

    $dateTime = new DateTime('now', new DateTimeZone('UTC'));
    $dateTime = $dateTime->format("y-m-d H:i:s");
    echo $dateTime;