簡體   English   中英

PHP UTC 字符串到日期

[英]PHP UTC String to date

我有個問題。 在我的代碼中,我有以下行:

$RunDateTimeGMT0 = "2017-12-31 23:00:00";

目標是獲得前一小時和下一小時,所以我嘗試了這個:

$RunDateTimeGMT0 = "2017-12-31 23:00:00";
$epochRunDateTimeGMT0 = strtotime($RunDateTimeGMT0);
$previousEpochDateTimeGMT0 = $epochRunDateTimeGMT0 - 3600;
$nextEpochDateTimeGMT0 = $epochRunDateTimeGMT0 + 3600;

但后來我得到以下結果:

previousEpochDateTimeGMT0 -> 2017-12-31 21:00:00
nextEpochDateTimeGMT0 -> 2017-12-31 23:00:00

由於我的時區(+1)RunDateTimeGMT0被轉換為我的時區的日期。 我想要以下結果:

validEpochDateTimeGMT0 -> 2017-12-31 22:00:00
nextEpochDateTimeGMT0 -> 2018-01-01 00:00:00

如何保留日期 object UTC?

您可以使用Carbon庫。 導入此庫后,您應該使用以下方法解析日期:

$RunDateTimeGMT0 = "2017-12-31 23:00:00";
$epochRunDateTimeGMT0 = Carbon::parse($RunDateTimeGMT0);

這個鏈接中,你可以看到 Carbon 的文檔。 雖然,也許你應該使用這種方法:

$previousEpochDateTimeGMT0 = $epochRunDateTimeGMT0->addminutes(60);
$nextEpochDateTimeGMT0 = $epochRunDateTimeGMT0->subminutes(60);

我希望您的問題可以通過這些行解決,如果發生其他問題,您可以詢問。

@Ebrahim Bashirpour 已經通過使用 Carbon 庫共享了一種執行此操作的方法,但您也可以僅使用 PHP 日期時間 class 來執行此操作。 它支持以秒為單位的加法減法 查看 DateTime文檔以獲取更多詳細信息。

<?php
    $RunDateTimeGMT0 = "2017-12-31 23:00:00";

    $date = new \DateTime($RunDateTimeGMT0);
    $date->add(new \DateInterval('PT3600S')); //add 3600s / 1 hour
    $next_epoc = $date->format('Y-m-d H:i:s'); // 2018-01-01 00:00:00


    $date = new \DateTime($RunDateTimeGMT0);
    $date->sub(new \DateInterval('PT3600S'));//add 3600s / 1 hour
    $previous_epoc = $date->format('Y-m-d H:i:s'); //2017-12-31 22:00:00

    var_dump($next_epoc);
    var_dump($previous_epoc);
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM