为了账号安全,请及时绑定邮箱和手机立即绑定

Strtotime()不适用dd/mm/yyyy格式

Strtotime()不适用dd/mm/yyyy格式

PHP
慕姐4208626 2019-07-03 16:14:28
Strtotime()不适用dd/mm/yyyy格式我真的很喜欢strtotime()函数,但是用户手册没有给出支持的日期格式的完整描述。strtotime('dd/mm/YYYY')不起作用,它只适用于mm/dd/YYYY格式。如果我有约会dd/mm/YYYY格式,如何将其转换为YYYY-mm-dd?我可以用explode()但我认为有更好的解决方案。
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

以下是简化的解决方案:

$date = '25/05/2010';$date = str_replace('/', '-', $date);echo date('Y-m-d', strtotime($date));

结果:

2010-05-25

这个strtotime文献资料全文如下:

的日期M/d/y德米通过查看各个组件之间的分隔符来消除格式的歧义:如果分隔符是斜杠(/),然后是美国人M/d/y假设;而如果分隔符是破折号(-)或点(.),然后是欧洲人德米采用格式。


查看完整回答
反对 回复 2019-07-03
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您可以用以下方式解析来自定义格式的日期(从PHP5.3开始)日期:createFromFormat

$timestamp = DateTime::createFromFormat('!d/m/Y', '23/05/2010')->getTimestamp();

(旁白:!用于将非指定值重置为unix时间戳,即。时间是午夜。)


如果您不想(或不能)使用PHP5.3,则将列出strtotime接受的可用日期/时间格式的完整列表。日期格式手册页。那一页更详细地描述了这样一个事实:m/d/Y推断出d/m/Y(但正如这里的答案所提到的,您可以使用d-m-Yd.m.Yd\tm\tY).


在过去,我也曾求助于快速str_replace在另一个答案中提到,以及将日期字符串自解析为另一种格式,如

$subject   = '23/05/2010';$formatted = vsprintf('%3$04d/%2$02d/%1$02d', sscanf($subject,'%02d/%02d/%04d'));
$timestamp = strtotime($formatted);


查看完整回答
反对 回复 2019-07-03
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

来自STRTOTIME的书面说明:

通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式中的日期歧义:如果分隔符是斜杠(/),则假定是美国的m/d/y;而如果分隔符是破折号(-)或点(.),则采用欧洲的d-m-y格式。

事情就这么简单。


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 465 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信