我寫這段代碼PHP日期的strtotime不工作
echo date("Y-m-d", strtotime($date, strtotime("+ " . $days . " days")));
$date = 2012-04-12
$days = 15
我期待$days
(15天)添加到我期待獲得2012-04-27
日期(2012-04-12
)和該代碼返回我2012-04-12
,我究竟做錯了什麼?
我寫這段代碼PHP日期的strtotime不工作
echo date("Y-m-d", strtotime($date, strtotime("+ " . $days . " days")));
$date = 2012-04-12
$days = 15
我期待$days
(15天)添加到我期待獲得2012-04-27
日期(2012-04-12
)和該代碼返回我2012-04-12
,我究竟做錯了什麼?
echo date('Y-m-d', strtotime('+15 days', strtotime('2012-04-12')));
爲什麼不只是使用DateTime類?
$date = new DateTime();
$date->add(new DateInterval('P15D'));
echo date("Y-m-d", strtotime("+$days days", $date));
不要使用的strtotime()。這是不可靠的,儘管你並沒有真正做出任何真正會回來咬你的東西。但取決於時間依然是一件壞事,因爲它會讓你的生活在某些時候變得悲慘。
使用DateTime代替:
$now = DateTime::CreateFromFormat('Y-m-d', '2012-04-12');
$then = $now->add(new DateInterval('P15D'));
$date = $then->format('Y-m-d');
'strtotime()'不是不可靠的;實際上,DateTime類在表單下使用它。 – 2012-04-12 18:17:19
是的,如果你是自動檢測的東西。但是如果你有一個已知格式的日期,那麼根本不要使用strtotime。 – 2012-04-12 18:18:50
原則上,我同意你的觀點,馬克,但我質疑實例化對象的必要性,以做一些如此微不足道的事情。如果他打算進行時區更改或其他更高級的操作,那麼絕對是使用該對象。只需添加幾天?咩。 – 2012-04-12 18:20:29
$date = '2012-04-12';
$days = 15;
echo date('Y-m-d', strtotime("$date +$days days"));
你的語法不正確。將代碼全部放在一行是沒有必要的,甚至是無用的。在這種情況下,我們發現嘗試這樣做會導致語法問題。不要害怕幾個額外的小變量!
$date = '2012-04-12';
$days = 15;
$ts = strtotime($date);
$new_ts = strtotime('+'.$days.' days', $ts);
$new_date = date('Y-m-d', $new_ts);
清晰,易讀,易調試。如果你喜歡的代碼打高爾夫球,你可以把它放在同一行,但有寫它更明確的方式:
$new_date = date (
'Y-m-d',
strtotime (
'+'.$days.' days',
strtotime($date)
)
);
文檔
strtotime
- http://php.net/manual/en/function.strtotime.phpdate
- http://php.net/manual/en/function.date.php
謝謝,就是我在找的:) – user979331 2012-04-12 18:24:45