解析可能没有零填充单位的可变长度日期时间字符串(“m/d/yyyy H:i:s”或“mm/dd/yyyy H:i:s”)

问题描述 投票:0回答:3

如何转换格式如下的日期字符串:

m/d/yyyy H:i:s
mm/dd/yyyy H:i:s

并将其格式化为:

yyyy-mm-dd H:i:s

我可以将两个输入中的任何一个格式化为我想要的格式,但不能同时格式化。

php string datetime date-conversion date-parsing
3个回答
4
投票
function format_date($date){
  return date('Y-m-d H:i:s',strtotime($date));
  }

应该可以解决问题。


1
投票

最简单的方法是先使用

strtotime
将其转换为 UNIX 时间,然后运行
strftime
...不是最佳实践,但它消除了很多潜在的格式解析问题:-)


1
投票

你现在如何格式化它?如果您确定这些是您可能作为输入的唯一两种日期格式,那么您可以在正斜杠上使用

explode()
,然后如果
strlen()
在月份或日期上返回 1,请添加 0当您创建
yyyy-mm-dd
字符串时。

但是,如果您不能保证这些是您唯一的两种输入格式,那么我会使用

strtotime()
将其转换为纪元,然后使用
date()
将其格式化为您想要的格式。处理命中稍大,但代码更通用。

© www.soinside.com 2019 - 2024. All rights reserved.