PHP的date函数为何返回格式错误的重复日期?
PHP date()函数返回重复格式结果的原因及解决办法
哈哈,这个问题我之前帮好几个开发者排查过,一眼就能看出问题所在~
你看到的2018201820182018-MarMar-WedWed 0909:0303:4949这种重复格式,核心原因是你错误地重复使用了PHP date()函数的格式占位符。
关键知识点:PHP date()的格式占位符是单个字符
在PHP里,date()函数的每个格式规则都是单个英文字符:
Y= 4位完整年份(比如2018)M= 月份的英文缩写(比如Mar)D= 星期的英文缩写(比如Wed)H= 24小时制的两位小时(比如09)i= 两位补零的分钟(比如03)s= 两位补零的秒数(比如49)
如果你把这些占位符重复写多次(比如写成YYYY-MM-DD HH:ii:ss),函数会把每个字符单独解析替换——四个Y就会输出四次年份,两个M就会输出两次月份缩写,以此类推,最终就出现了你看到的重复结果。
正确的写法示例
如果你想要的是类似2018-Mar-Wed 09:03:49的格式,正确的代码应该是:
// 输出带英文缩写的日期时间 echo date('Y-M-D H:i:s'); // 如果想要数字格式的日期(比如2018-03-14 09:03:49),用这个: echo date('Y-m-d H:i:s');
额外注意事项
- 别把PHP的格式规则和其他语言搞混(比如Java的SimpleDateFormat需要用
yyyy表示4位年),PHP的每个格式符都是单字符; - 如果需要补零的数字格式(比如两位小时、分钟),单个占位符已经处理了补零逻辑,不需要重复写;
- 可以查阅PHP官方的日期格式字符表,确认每个占位符的准确含义,避免写错。
内容的提问来源于stack exchange,提问作者PRENDETEVELO NEL CULO
相关产品推荐
相关产品推荐

