2012-01-10 81 views
0
$dateTime="2011-10-12 00:00:00"; 

echo $newDateTime =date("Y-m-d H:i:s", strtotime($dateTime.' -1 hours 30 minutes')); 

的上面的代碼的結果是'2011-10-11二十三時30分00秒'。但是,正確答案應該是 2011-10-11 22:30:00。錯誤上的strtotime()

代碼中是否存在任何錯誤,任何人都可以幫助我?

非常感謝

+1

您正在初始化$ dateTime,然後在您的strtotime表達式中使用$ dateTime2。 – liquorvicar 2012-01-10 10:00:47

+0

@liquorvicar,這是錯字錯誤 – Acubi 2012-01-10 10:03:48

回答

1

日期功能不完全夏時制。嘗試使用dateTime對象代替

+0

在這種特殊情況下夏時制不是問題。 – salathe 2012-01-10 16:02:22

2

23:30是預期的結果(一旦您知道發生了什麼)。

字符串(-1 hours 30 minutes)的相對部件分別處理-1 hours30 minutes。它們是Relative Formats文檔中描述的number space? (unit | 'week')格式的兩個實例。

正因爲如此,時間累積相對變化只有-30 minutes,從午夜開始到23:30

獲得您想要的效果,無論是:

  • 使用相對單一的語句(如-90 minutes
  • 製作原始分鐘發言否定的,因爲-1 hours -30 minutes
  • ,或使用特殊的ago格式as 1 hours 30 minutes ago

有關更多詳細信息,請參見http://php.net/datetime.formats.relative

+0

有趣的是,我從來沒有意識到這一點 – 2012-01-10 16:05:50