我的代碼:$data['from'] = '2020-03-20 20:30:00';$data['to'] = '2020-03-21 00:45:00';$validity = \Validator::make($data, [ 'from' => ['date_format:Y-m-d H:i:s'], 'to' => ['date_format:Y-m-d H:i:s']]);// This if gets true, and the error message is:to 與格式 Ymd H:i:s 不匹配if($validity->fails()) { dd($validity->errors());}令人驚訝的是,當我改變它時00:45:00,01:45:00它并沒有進入那個 if。我該如何解決?
2 回答

PIPIONE
TA貢獻1829條經驗 獲得超9個贊
由于您的語言環境設置為Asia/Tehran
時間2020-03-21 00:45:00
實際上是無效的。根據https://www.timeanddate.com/time/change/iran/tehran:
2020 年 3 月 21 日星期六,00:00:00 時鐘將調撥 1 小時至 2020 年 3 月 21 日星期六,01:00:00 當地時間。
這意味著 00:00:00 和 01:00:00 之間的時間永遠不會出現。由于 Laravel 日期驗證器在內部使用 PHP 的日期解析,因此解析失敗并引發錯誤。如果您只想檢查日期是否為給定格式而忽略任何夏令時怪癖,那么您可以使用date_default_timezone_set
臨時將語言環境設置為不遵守夏令時的語言環境。

慕慕森
TA貢獻1856條經驗 獲得超17個贊
嘗試
$validity = \Validator::make($data, [
'from' => 'date_format:Y-m-d H:i:s',
'to' => 'date_format:Y-m-d H:i:s'
]);
- 2 回答
- 0 關注
- 127 瀏覽
添加回答
舉報
0/150
提交
取消