[英]Why does DateTime::createFromFormat('d-m-Y H:i A', $date)->format('d-m-Y') change the date to the following day after 1pm?
為什么DateTime :: createFromFormat('dmY H:i A',$ date)-> format('dm-Y')將日期更改為下午1點后的第二天?
**請注意,我認為它可能與'H'或'h'的格式有關,但我仍想弄清楚。
$date = "04-12-2018 12:59 PM";
$date_input = "04-12-2018 13:00 PM";
echo $date . ' - date <br>';
echo $date_input . ' - date_input <br>';
var_dump($date);
echo '<br/>';
var_dump($date_input);
echo '<br/>';
echo DateTime::createFromFormat('d-m-Y H:i A', $date)->format('d-m-Y') . '<br/>';
echo DateTime::createFromFormat('d-m-Y H:i A', $date_input)->format('d-m-Y') . '<br/>';
結果:
04-12-2018 12:59 PM - date
04-12-2018 13:00 PM - date_input
string(19) "04-12-2018 12:59 PM"
string(19) "04-12-2018 13:00 PM"
04-12-2018
05-12-2018
您不能有13:00 PM。如果執行此操作,那么格式化功能會認為是第二天。
將代碼更改為以下解決方案:
**注意:$ date_input和$ another_date的格式為'H或h'和'A'
$date = "04-12-2018 12:59 PM";
$date_input = "04-12-2018 13:00";
$another_date = "04-12-2018 01:00 PM" ;
echo $date . ' - date <br>';
echo $date_input . ' - date_input <br>';
echo $another_date . ' - another_date <br>';
var_dump($date);
echo '<br/>';
var_dump($date_input);
echo '<br/>';
var_dump($another_date);
echo '<br/>';
echo DateTime::createFromFormat('d-m-Y H:i A', $date)->format('d-m-Y') . '<br/>';
echo DateTime::createFromFormat('d-m-Y H:i', $date_input)->format('d-m-Y') . '<br/>';
echo DateTime::createFromFormat('d-m-Y h:i A', $another_date)->format('d-m-Y') . '<br/>';
“ 13:00 pm”不是有效時間:在12小時時鍾中,從1到12。您可以通過調用DateTime::getLastErrors()
檢查解析是否失敗:
php > echo DateTime::createFromFormat('d-m-Y H:i A', $date_input)->format('d-m-Y');
05-12-2018
php > print_r(DateTime::getLastErrors());
Array
(
[warning_count] => 1
[warnings] => Array
(
[19] => The parsed time was invalid
)
[error_count] => 0
[errors] => Array
(
)
)
似乎該實現將下午13點視為凌晨1點,就像將“ 11月31日”視為12月1日一樣。
根據DateTime :: __ construct()的PHP文檔
不存在的值會翻轉。
// Non-existent values roll over.
$date = new DateTime('2000-02-30');
echo $date->format('Y-m-d H:i:sP') . "\n";
產量
2000-03-01 00:00:00-05:00
因此,這不是錯誤,而是功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.