這可能不完全回答你的問題,但檢查date_parse()
的結果爲您的示例日期,它似乎字符串中的第一個字母被解釋爲時區,並且字符串的其餘部分,以及警告或錯誤"Double timezone specification"
,如果發生錯誤,則不能創建DateTime
。
例如:
date_parse("1920-09-12d")
Array
(
[year] => 1920
[month] => 9
[day] => 12
[hour] =>
[minute] =>
[second] =>
[fraction] =>
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 0
[errors] => Array
(
)
[is_localtime] => 1
[zone_type] => 2
[zone] => -240
[is_dst] =>
[tz_abbr] => D
)
通知的時區 「d」
date_parse("1920-09n-12")
Array
(
[year] => 1920
[month] => 9
[day] => 1
[hour] =>
[minute] =>
[second] =>
[fraction] =>
[warning_count] => 1
[warnings] => Array
(
[8] => Double timezone specification
)
[error_count] => 0
[errors] => Array
(
)
[is_localtime] => 1
[zone_type] => 2
[zone] => 60
[is_dst] =>
[tz_abbr] => N
)
注意時區「N」,此外,12不被解釋爲月份的日期,而是我懷疑「-12」被解釋爲額外的時區規範,因此是警告。
date_parse("1920r-09-12")
Array
(
[year] =>
[month] =>
[day] =>
[hour] => 19
[minute] => 20
[second] => 0
[fraction] =>
[warning_count] => 1
[warnings] => Array
(
[5] => Double timezone specification
)
[error_count] => 1
[errors] => Array
(
[8] => Double timezone specification
)
[is_localtime] => 1
[zone_type] => 2
[zone] => 300
[is_dst] =>
[tz_abbr] => R
)
通知時區 「R」,還沒有日期進行解析,而1920
被解釋爲時間19:20:00
,我懷疑該字符串的其餘部分是解釋爲2個時區,「-09」&「-12」,導致錯誤「Double timezone specification」。
您是否嘗試過laravel中包含的'Carbon'類? –
是的,我使用碳,但不能改變框架驗證規則。 無論如何,問題是與時間不在框架。 我剛剛解決了我在項目中的問題,但我想知道爲什麼strtotime沒有預期的行爲。 –