我在字符串上有这个日期格式 dmy ,所以 01-01-12 是 2012 年 1 月 1 日。
现在,我想将其转换为 php 中的日期对象,以对一组日期进行排序,这些日期作为字符串存储在数组中。
目前,我正在使用 strtotime 和 date
$keypoints[] = date('d-m-y', strtotime($date_str));
但这是对生成的日期进行排序,就好像格式是 ymd 一样。问题是,如何设置strtotime函数的输入格式?
提前致谢
PHP 的 strtotime() 返回一个 unix 时间戳,它只是一个数字。您是否考虑过将这些存储在您的数组中并像这样排序?然后,您可以在需要时转换回漂亮的日期,例如用于输出。
strtotime 中带有反斜杠的日期被读取为 m/d/y,而带有 - 作为分隔符的天被读取为 dmy
从手册:
笔记:
m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。
为避免潜在的歧义,最好尽可能使用 ISO 8601 (YYYY-MM-DD) 日期或 DateTime::createFromFormat()。
你不能。explode() 你的 01-01-12 日期并使用生成的片段与 mktime() 来获得正确的 unixtime。
在 PHP 手册页中,strtotime
接受“日期/时间字符串。有效格式在日期和时间格式中进行了说明”。
另一种方法是使用DateTime::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]));