首页  >  文章  >  数据库  >  为什么我的 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:021043浏览

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