2014-08-27 128 views
1

爲什麼在使用其他日期時僅在使用25-Oct-13和5天(如預期)時總共只有4天?奇怪的php日期總和行爲

<?php 
    echo date('d-M-y',(strtotime('25-Oct-13') + (432000))); 
?> 
+1

夏季和冬季 – Naruto 2014-08-27 11:17:30

+0

因此,再增加一個小時應該解決這個問題? – 2014-08-27 11:18:39

+1

你可以使用'strtotime()'的功能:'25-Oct-13 + 5days' – kero 2014-08-27 11:19:07

回答

1

這取決於您的時區。十月份的最後一個星期六是某些地區的夏令時(DST)結束。因此,2013年10月26日至27日晚間可能會或可能不會包含額外的時間。

繞過這個問題,通過增加實際的天,而不是小時:

$myDate = new \Datetime('2013-10-25'); 
$myDate->add(new \DateInterval('P5D')); 

This does return Oct 30th 2013

More strange stuff can happen from incorrectly assuming that days are always exactly 24 hours

+0

我已經添加了這個:date_default_timezone_set('America/Adak');現在它工作正常。謝謝! – 2014-08-27 11:29:01

+0

更改時區不是解決問題的根本。 – 2014-08-27 11:30:23

+0

我不明白'基本解決方案'的含義,但只要它不會給我帶來麻煩,那就是理想之選。這是我在這些日期裏唯一的操作。沒有其他細節將被使用/添加,永遠。 – 2014-08-27 11:45:03

1

$ date =「2014-09-17」;

echo date('Y-m-d',strtotime($ date。'+ 5 days'));