php
  • date
  • datetime
  • 2015-04-02 47 views 0 likes 
    0

    我將UNIX時間戳從javascript vat stamp = +new Date/1000發送到PHP。PHP設置時區而不更改日期?

    然後我做

    //Here $d = '2015/04/03 00:00:00' 
    $d = new DateTime("@{$stamp}"); 
    $d->setTimezone(new DateTimeZone('Pacific/Auckland')); 
    
    //Here $d = '2015/04/03 00:00:00' + 7:15 hrs (7:15 hrs is time diff between my browser & Auckland) 
    

    我想更改時區,但保持的日期相同。所以,在我setTimezonePacific/Auckland之後,日期應該仍然是'2015/04/03 00:00:00'

    +0

    把進入php的時間戳存儲爲一個變量,並將當前日期轉換爲不同的時區並比較兩者並調整+或 - 從那裏 – MrTechie 2015-04-02 06:01:51

    回答

    2

    我需要指出的是你要求的東西是荒謬的。 UNIX時間戳代表絕對時間點。它不代表「2015/04/03 00:00:00」,因爲日期格式可以引用幾十個不同的時間點,具體取決於您解釋此字符串的時區。UNIX時間戳記不會沒有這個問題,它代表什麼時間點基於時區是不可談判的。

    如果您採取絕對時間點並且想將其格式化爲依賴於時區的人類可讀時間,則此人類可讀值必須通過向其應用不同的時區來更改。你要求的是改變時間戳所指的時間點,此時它只是任意的。

    2

    下面介紹一種方法。

    $_date = new \DateTime($date->format('Y-m-d H:i:s'), new \DateTimeZone('<time zone>')); 
    
    相關問題