簡體   English   中英

如何檢查PHP中的日期格式?

[英]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/201505/07/2015具體取決於格式。 因此,如果您只是在沒有其他信息的情況下獲得日期字符串,則無法判斷例如05/07/2015May, 7th還是July, 5th

很抱歉,您的問題沒有合乎邏輯的解決方案。

來自strtotime 上PHP 手冊

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 來自何處時,您將無法區分它。

您可以使用 PHP.net 中此函數的修改版本。 它使用 DateTime 類:

function validateDate($date)
{
    $d = DateTime::createFromFormat('d/m/Y', $date);
    return $d && $d->format('d/m/Y') == $date;
}

if(validateDate($StartsOn)){
//do job
}

函數是從此答案php.net復制的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM