首頁  >  文章  >  資料庫  >  為什麼我的 PHP 程式碼在轉換 URL 中的 dd/mm/yyyy 日期時回傳 1970-01-01?

為什麼我的 PHP 程式碼在轉換 URL 中的 dd/mm/yyyy 日期時回傳 1970-01-01?

Patricia Arquette
Patricia Arquette原創
2024-11-06 04:26:02958瀏覽

Why Does My PHP Code Return 1970-01-01 When Converting dd/mm/yyyy Dates in URLs?

將URL 中的日期從dd/mm/yyyy 轉換為YYYY-MM-DD

在PHP 中,您提供了嘗試轉換以下格式的日期的代碼dd/mm/yyyy 轉換為YYYY-MM-DD 格式。但是,您遇到了轉換回傳意外值 1970-01-01 的問題。

strtotime() 問題

問題在於使用 PHP strtotime( ) 功能。當解析 dd/mm/yyyy 格式的日期時,strtotime() 假定前兩位數字代表月份 (mm),接下來的兩位數字代表日期 (dd)。例如,20/02/2000 將解釋為 2000 年 2 月 20 日。

但是,在您的情況下,URL 中的日期採用日/月/年格式 (dd/mm/yyyy) 。這意味著前兩位數字代表日期,接下來的兩位數字代表月份。因此,strtotime() 會誤解日期並傳回不正確的值。

使用 DateTime::createFromFormat() 的解決方案

要解決此問題,建議使用 DateTime:: createFromFormat() 方法而不是 strtotime()。此方法允許您指定日期字串的確切格式,確保正確解析它。以下是程式碼的更新版本:

透過使用 DateTime::createFromFormat(),您可以準確地將 URL 中的日期轉換為 YYYY-MM-DD 格式。

其他注意事項

為了防止將來出現類似問題,正確設定 URL 中的日期格式非常重要。如果您以 dd/mm/yyyy 格式傳遞日期,請確保前兩位數字代表日期,後兩位數字代表月份。或者,考慮使用更標準化的格式,例如 YYYY-MM-DD。

以上是為什麼我的 PHP 程式碼在轉換 URL 中的 dd/mm/yyyy 日期時回傳 1970-01-01?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn