还有一个php日期格式问题

还有一个php日期格式问题,php,date,format,strtotime,Php,Date,Format,Strtotime,我在字符串上有这个日期格式d-m-y,所以01-01-12是2012年1月1日 现在,我想将其转换为php中的date对象,对一组日期进行排序,这些日期作为字符串存储在数组中 目前,我正在使用strottime和date $keypoints[] = date('d-m-y', strtotime($date_str)); 但这是对结果日期进行排序,就像格式是y-m-d一样。问题是,如何设置strotime函数的输入格式 提前谢谢你不能。分解()您的01-01-12日期,并使用mktime()

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

现在,我想将其转换为php中的date对象,对一组日期进行排序,这些日期作为字符串存储在数组中

目前,我正在使用strottime和date

$keypoints[] = date('d-m-y', strtotime($date_str));
但这是对结果日期进行排序,就像格式是y-m-d一样。问题是,如何设置strotime函数的输入格式


提前谢谢

你不能。分解()您的01-01-12日期,并使用mktime()获得正确的unixtime。

PHP的strotime()返回一个unix时间戳,它只是一个数字。您是否考虑过将这些存储在数组中并进行排序?然后,您可以在需要时转换回一个好看的日期,例如用于输出。

在PHP手册页面中,
strottime
接受“日期/时间字符串。中解释了有效的格式”


另一种方法是使用。

在strotime中带有反斜杠的日期被读取为m/d/y,其中带有-as delimeter的日期被读取为d-m-y

从手册中:

注:

m/d/y或d-m-y格式的日期通过查看 不同组件之间的分隔符:如果分隔符是 斜杠(/),则假定为美式m/d/y;然而,如果 分隔符是破折号(-)或点(.),然后是欧洲d-m-y格式 这是假定的

为了避免潜在的歧义,最好使用ISO 8601(YYYY-MM-DD) 日期或日期时间::createFromFormat()(如果可能)


尝试此操作以
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]));

您可以使用“-”或“.”作为分隔符,而不是反斜杠。这样如何$date_arr=分解('-',$date_str)$关键点[]=日期(“d-m-y”,mktime(0,0,0,$date_arr[1],$date_arr[0],$date_arr[2]);然后您将获得与输出相同的输入日期字符串
y
2
位给出年份,而
y
则以
4
位给出完整的
。如果这是您的意思,您可以使用
d-m-Y
。如果您要使用它进行排序,请仅使用
mktime
部分。排序后,您可以将其转换为所需的格式。