2016-01-16 109 views
1

我想對格式化爲「2016年1月21日」的日期字符串使用datetime-> modify函數。當我使用datetime->修改並添加1天時,它給了我2017年4月30日的結果。我知道如果我不使用短月份名稱並使用數字(即01),它將正常工作但我想用這個簡短的月份名稱來工作。這可能嗎?下面修改月份的日期時間短名稱格式化日期字符串

請參閱代碼:

<?php 
$date = "21 Jan 2016"; // this is my date string 
$newdate = new DateTime($date); 
$date2 = $newdate->modify('+1 day'); // add 1 day to date string 
echo $date2->format("d-M-Y"); 
?> 

結果是:

30-APR-2017

結果通緝

22-JAN-2016

回答

2

的問題是您試圖從非ISO格式創建DateTime對象。那就是那個不起作用的部分。

看看:http://php.net/manual/ro/datetime.createfromformat.php

你需要有一些像

DateTime::createFromFormat('d M Y', '21 Jan 2016'); 

完整的示例:

$tomorrow = DateTime::createFromFormat('d M Y', '21 Jan 2016')->modify('+1 day')->format("d-M-Y"); 
echo($tomorrow); 
+0

此日期的格式爲「DD M YY」。 – Hatchet

+0

謝謝,斧頭:) –

+0

當我使用這個:new DateTime :: createFromFormat('DD M YY','21 Jan 2016')我得到語法錯誤,意外的'createFromFormat'(T_STRING),期待變量(T_VARIABLE)或' $' – mush

相關問題