1

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

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

目前,我正在使用 strtotime 和 date

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

但这是对生成的日期进行排序,就好像格式是 ymd 一样。问题是,如何设置strtotime函数的输入格式?

提前致谢

4

5 回答 5

3

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

于 2012-10-30T10:31:09.210 回答
2

strtotime 中带有反斜杠的日期被读取为 m/d/y,而带有 - 作为分隔符的天被读取为 dmy

从手册:

笔记:

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

为避免潜在的歧义,最好尽可能使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat()。

于 2012-10-30T10:34:21.103 回答
1

你不能。explode() 你的 01-01-12 日期并使用生成的片段与 mktime() 来获得正确的 unixtime。

于 2012-10-30T10:31:07.460 回答
1

在 PHP 手册页中,strtotime接受“日期/时间字符串。有效格式在日期和时间格式中进行了说明”。

另一种方法是使用DateTime::createFromFormat.

于 2012-10-30T10:31:38.413 回答
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]));
于 2012-10-30T10:35:09.823 回答