我在字符串上有这个日期格式d-m-y,因此01-01-12是2012年1月1日。
现在,我想将它转换为php中的日期对象,以对一组日期进行排序,这些日期以字符串形式存储在数组中。
目前,我正在使用strtotime和日期
$keypoints[] = date('d-m-y', strtotime($date_str));
但是这会将结果日期排序,就像格式为y-m-d一样。问题是,如何设置strtotime函数的输入格式?
提前致谢
答案 0 :(得分:3)
PHP的strtotime()返回一个unix时间戳,它只是一个数字。您是否考虑过将这些存储在数组中并进行排序?然后,您需要在需要时转换回漂亮的日期,例如输出。
答案 1 :(得分:2)
strtotime中带有反斜杠的日期读取为m / d / y,其中 - 作为天数的天数被读为d-m-y
从手册:
注意:
通过查看,可以消除m / d / y或d-m-y格式的日期 各个组件之间的分隔符:如果分隔符是a 斜线(/),然后是美国m / d / y;而如果 separator是短划线( - )或点(。),然后是欧洲d-m-y格式 假定。
为避免潜在的歧义,最好使用ISO 8601(YYYY-MM-DD) date或DateTime :: createFromFormat()尽可能。
答案 2 :(得分:1)
你做不到。 explode()你的01-01-12日期,并使用mktime()生成的部分来获得正确的unixtime。
答案 3 :(得分:1)
在PHP手册页中,strtotime
接受"日期/时间字符串。有效格式在Date and Time Formats"。
另一种方法是使用DateTime::createFromFormat
。
答案 4 :(得分:1)
尝试以Y-m-d
格式
$date_arr = explode('-', $date_str);
$keypoints[] = date("Y-m-d", mktime(0, 0, 0, $date_arr[1], $date_arr[0], $date_arr[2]));