[英]How to check format of Date in PHP?
我的 SQL 服務器使用mm/dd/yyyy
日期格式,但我使用 jQuery 實現的日期選擇器將日期格式提供為dd/mm/yyyy
。
所以我編碼它來檢查給定的輸入是否采用mm/dd/yyyy
格式,但無論日期輸入采用哪種格式,它都會評估為 true。PHP 代碼是,
$Temp = DateTime::createFromFormat('d/m/Y', $StartsOn);
if($Temp)
$Temp->format('m/d/Y');
僅當輸入為dd/mm/yyyy
我才需要轉換為mm/dd/yyyy
格式。 所以請告訴我我在代碼中犯的邏輯錯誤是什么。
不可能可靠地檢查日期是dd/mm/yyyy
還是mm/dd/yyyy
格式。 想想像“5 月 7 日”這樣的日期。
這將是07/05/2015
或05/07/2015
具體取決於格式。 因此,如果您只是在沒有其他信息的情況下獲得日期字符串,則無法判斷例如05/07/2015
是May, 7th
還是July, 5th
。
很抱歉,您的問題沒有合乎邏輯的解決方案。
m/d/y 或 dmy 格式的日期通過查看各個組件之間的分隔符來消除歧義:如果分隔符是斜杠 (/),則假定為美國 m/d/y; 而如果分隔符是破折號 (-) 或點 (.),則假定為歐洲 dmy 格式。 為避免潛在的歧義,最好盡可能使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat()。
將日期傳遞給 SQL Server 的原因是 mm/dd/yyyy 是因為分隔符。 在可能的情況下,始終最好按照為此目的創建的ISO 8601作為 YYYY-MM-DD 傳遞。 要解決您的問題,最好的辦法是更改 jQuery 插件配置以輸出該格式的數據(如果不可能,字符串替換/
with -
它來自 jQuery 插件。這將通過編寫代碼來修復日期格式。
當您不知道 mm/dd/yyyy 和 dd/mm/yyyy 來自何處時,您將無法區分它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.