我想用正確的UTC偏移量來顯示事件的開始時間(紐約時區),所以通常會顯示這樣的內容:
我想用正確的UTC偏移量來顯示事件的開始時間。
June 01, 2001 @ 20: 00 UTC-4。
但是,如果事件在夏令時開始,事件輸出將自動顯示UTC-5,因為紐約的晚上8點將是UTC-5:
December 01, 2001 @ 20: 00 UTC-5。
有什么方法可以做到這一點嗎?
在DateTime中,我最接近的是不顯示時區:
在DateTime中,我可以不顯示時區。
'F j, Y @ G:i'
uj5u.com熱心網友回復:
你有幾個選擇,但沒有一個是你要找的。你可能需要做一些操作。
對于默認的格式化器,你有幾個選擇,但沒有一個是你想要的,你可能需要做一些操作。
對于默認的格式化,您有O( 0200),P或p( 02:00),以及T(EST,MDT, 05)。參見時區標識下的https://www.php.net/manual/en/datetime.format.php。它不會添加UTC,但你可以自己添加,如'F j, Y @ G:i UTCP',目前我得到的是"September 21, 2021 @ 7:51 UTC-04:00"。
另一個選擇是,如果你只想得到數字,那么你可以自己對其進行格式化。在DateTime類中,你有getOffset(),它回傳以秒為單位的偏移。通過一些數學運算,你可以得到這個數字
$date = new DateTime();
$offset = $date->getOffset() / 60 / 60; //除以60秒為1分鐘,60分鐘為1小時。
$formatted_date = $date->format('F j, Y @ G:i') 。" UTC$offset"。
// "September 21, 2021 @ 7:52 UTC-4"。
uj5u.com熱心網友回復:
你可以用DateTime Format選項 "P "將時間傳遞給你,然后用sprintf格式化所需的結果。
function tzUTC(DateTimeInterface $date)
{
$tzHours = (int)$date-> format('P');
return sprintf('UTC% 1d',$tzHours) 。
}
例子:
$date = new DateTime('now', new DateTimezone('America/New_York'))。
echo $date->format('F j, Y @ G:i ').tzUTC($date) 。
輸出:
September 21, 2021 @ 9: 10 UTC-4
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/328385.html
標籤:
