解析可能没有零填充单位的可变长度日期时间字符串(“m/d/yyyy H:i:s”或“mm/dd/yyyy H:i:s”)
如何转换格式如下的日期字符串:
m/d/yyyy H:i:s
或 mm/dd/yyyy H:i:s
和格式它就像:
yyyy-mm-dd H:i:s
我可以将两个输入中的任何一个格式化为我想要的格式,但不能同时格式化两者。
How would you convert a date string that might be formatted like:
m/d/yyyy H:i:s
or mm/dd/yyyy H:i:s
and format it like:
yyyy-mm-dd H:i:s
I can format either of the two inputs into my desired format, but not both.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
strtotime()
解析这两种日期时间格式没有问题。然后只需将其返回的 unix 时间戳整数与
date()
结合使用即可生成所需的格式字符串。strtotime()
will have no problem parsing these two datetime formats.Then just use its return unix timestamp integer with
date()
to generate the desired format string.最简单的方法是先使用 strtotime 将其转换为 unix 时间,然后再运行 strftime ...这不是最好的做法,但它消除了很多潜在的格式解析问题 :-)
Easiest way would be to simply transform it to unix time first with
strtotime
then runstrftime
on it afterwards... not the bes practice but it eliminates alot of the potential format parsing issues :-)现在格式化的怎么样了?如果您确定这些是您可能作为输入的唯一两种日期格式,那么您可以在正斜杠上
explode()
它,然后如果strlen() 在月份或日期上返回 1,在创建
yyyy-mm-dd
字符串时添加 0。但是,如果您不能保证这些是您唯一的两种输入格式,那么我会使用
strtotime()
将其转换为纪元,然后使用date()
来将其格式化为您想要的格式。处理命中稍大,但代码更通用。How are you formatting it now? If you're certain that those are the only two date formats you'll possibly have as input, then you can
explode()
it on the forward slashes, then ifstrlen()
returns 1 on the month or the date, add a 0 as you're creating youryyyy-mm-dd
string.However, if you're not guaranteed that those are your only two input formats, then I would use
strtotime()
to convert it to epoch, then usedate()
to format it as you desire. A slightly bigger processing hit, but much more universal code.