簡體   English   中英

DateTime :: modify和DST開關

[英]DateTime::modify and DST switch

使用DateTime :: modify在DST邊界上添加一小時會導致它跳過一個小時。

例如

$d = new DateTime('2015-11-01 12:00:00 AM', new DateTimeZone('America/Vancouver'));
$d->modify('+1 hour'); // 1 AM
$d->modify('+1 hour'); // 2 AM
$d->modify('+1 hour'); // 3 AM

我希望看到“凌晨1點”兩次( 然后是 “凌晨2點”),因為時間可以追溯到一個小時。

我怎么能得到這種行為?

這是一個錯誤 學分

要解決此問題,請將時區更改為UTC,然后再將其更改為UTC。

$d = new DateTime('2015-11-01 12:00:00 AM', new DateTimeZone('America/Vancouver'));

$tz = getTimezone();
$d->setTimezone(new DateTimeZone('UTC'));
$d->modify('+1 hour'); 
$d->modify('+1 hour'); 
$d->modify('+1 hour'); 
$d->setTimezone($tz);
echo $d->format('d-M-Y g:ia'); // 01-Nov-2015 2:00am

暫無
暫無

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

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