又一个php日期格式问题

时间:2012-10-30 10:27:03

标签: php date format strtotime

我在字符串上有这个日期格式d-m-y,因此01-01-12是2012年1月1日。

现在,我想将它转换为php中的日期对象,以对一组日期进行排序,这些日期以字符串形式存储在数组中。

目前,我正在使用strtotime和日期

$keypoints[] = date('d-m-y', strtotime($date_str));

但是这会将结果日期排序,就像格式为y-m-d一样。问题是,如何设置strtotime函数的输入格式?

提前致谢

5 个答案:

答案 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]));