php - strtotime() & date() 将日期转换为与以前相同的格式时出现奇怪的行为

标签 php date strtotime

我必须将日期格式转换为 mm-dd-yyyy 我不知道当前日期格式是什么,它是动态的所以如果我有动态日期格式已经在 mm-dd-yyyy 然后 date() 函数返回低于 outout

    $date='02-13-2011';
    echo date('m-d-Y',strtotime($date));

输出是

  01-01-1970

?>

http://codepad.org/AFZ6jel7

所以我必须检查日期是否已经在 mm-dd-yyyy 中,然后不应用日期格式。 还有其他方法吗?可能在这些函数中传递另一个参数或类似的东西。

谢谢。

最佳答案

我强烈怀疑这是导致问题的原因:

Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed.

(在 strtotime documentation 中找到。)

你有破折号分隔符,所以它假设 d-m-y 格式,将其解析为 13 的月份,因此实际上失败了。

即使不是 PHP 开发人员,我也能想到一些选项:

  • 如果有一个函数允许您明确说明字符串的格式,请使用它。

    例如DateTime::createFromFormat()

  • 更改格式以使用斜杠
  • 更改格式以使用 d-m-y 而不是 m-d-y

关于php - strtotime() & date() 将日期转换为与以前相同的格式时出现奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5101605/

相关文章:

php - SVG 到 CDR 转换器

javascript - 如何防止 Javascript 将本地时区应用于 Date() 对象?

node.js - Windows PowerShell 不会从 Node.js 控制台记录 Date 对象

php strtotime +2.5 小时错误?

PHP strtotime 将 false 保存为 MySQL 负整数

PHP : How to echo different case of Mysql result into table?

javascript - PHP json格式编码

php - RESTful API 方法;头部和选项

mysql - 如何加入表格并根据每次匹配限制为 1 的日期差异获取结果?

php 使用简单的 strtotime 每月的第一个和最后一个工作日(可行的周一至周五)