【问题标题】:PHP: convert date time variable into date [duplicate]PHP:将日期时间变量转换为日期[重复]
【发布时间】:2018-07-02 15:20:17
【问题描述】:

我正在尝试将日期和时间变量转换为仅采用不同格式的日期:

$test_date = '01/07/2018 10:00-12:00';
$result = substr($test_date, 0, 10);
$newDate = date("Ymd", strtotime($result));
echo $newDate;

预期结果= 20180701 实际结果= 20180107

尝试了我可以在此处找到的所有相关变体,但始终使用“Ydm”而不是“Ymd”。

我在这里遗漏了一些明显的东西吗?

【问题讨论】:

  • $newDate = date("Ymd", strtotime($test_date)); 就是你需要做的一切
  • 其实你用的是合理的日期格式还是美国的日期格式
  • m/d/y 或 d-m-y 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则美国 m/d假设 /y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 d-m-y 格式。
  • @RiggsFollythats 仍然给出“Ydm”,如果使用 /,我猜是美国人

标签: php date time strtotime


【解决方案1】:

看起来它被“错误地”解析了,因为它没有明确说明源格式是什么,使用 DateTime 对象,您可以这样做(未经测试):

$result = substr($test_date, 0, 10);
$dateTime = DateTime::createFromFormat('d/m/Y', $result);
$newDate = $dateTime->format('Y-m-d');
echo $newDate;

【讨论】:

  • 那行得通,所以你必须定义当前格式?
  • 明确有助于避免令人讨厌的意外,否则您将其留给内部决定,我相信它往往默认为美国格式,但可能取决于@AbraCadaver 提到的分隔符,我得查一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-14
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 2014-07-01
相关资源
最近更新 更多