[英]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.