【问题标题】:Convert year only to Datetime in PHP在 PHP 中仅将年份转换为日期时间
【发布时间】:2013-11-23 11:56:02
【问题描述】:

我目前正在使用返回日期的 API。这些日期的格式永远不会相同。例如;我有时会得到一个像 1987/10/12 这样的日期,有时它只是返回年份。

我尝试将此日期转换为可以导入到我的 mysql 数据库中的格式,但它总是使用当前时间戳自动完成日期。

$item['released'] = "1989";
var_dump(strtotime($item['released']));

这将返回格林威治标准时间 1989 年 11 月 23 日星期四 11:53:53(为当前时间戳添加正确年份的日/月/年和时间)

为什么会这样,我怎么知道它必须像 1989/01/01 00:00:00 还是我应该换个角度看这个?

谢谢

【问题讨论】:

  • "这些日期的格式不同。"您为什么不发布这些日期的典型示例。另外,1987/10/12 - 那是 10 月 12 日还是 12 月 10 日?
  • 我只是不返回不可用的月份或日期。顺便说一句,它是美国格式
  • 什么样的 API 返回随机日期格式?

标签: php mysql date datetime


【解决方案1】:

根据您的问题和评论(“我只是不返回不可用的月份或日期。它以美国格式顺便说一句”)我想,您可能得到的日期是:

  • 1987/12/10
  • 1987/12
  • 1987

正确吗?

如果是这样,你可以使用类似的东西:

    $arr = explode('/', $input);
    $modifiedInput = $arr[0] . '/' .
            ((isset($arr[1])) ? $arr[1] : '01') . '/' .
            ((isset($arr[2])) ? $arr[2] : '01') . 
            ' 00:00:00';

$modifiedInput 对于第一个可能的输入将是 '1987/12/10 00:00:00',对于第二个可能的输入是 '1987/12/01 00:00:00','1987/01/01 00:00'第三个:00'。

如果 API 可能返回尾部斜杠(例如 '1987/12/'),您将需要修改三元运算符中的条件...

【讨论】:

  • 更好的例子是使用 sscanf() 函数,如 this demo
猜你喜欢
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2021-07-04
  • 2019-08-12
  • 2014-03-25
  • 1970-01-01
  • 2021-05-20
相关资源
最近更新 更多