strtotime使所有日期均为当前年份

时间:2018-12-03 21:17:57

标签: php

正在处理将在明年年底替换的旧版应用程序。我正在尝试修改它如何将一些日期写入数据库,而我对PHP不够了解,无法弄清楚为什么这样做:

前端有一个日期选择器。如果您选择类似2019年12月1日的日期,它将通过jquery保留该日期,恰好在将其传递到下面的函数之前是正确的,然后它进入该函数并将strtotime($str)弄乱了。

它将2019年12月1日转换为1543724340,将其放到UNIX时间戳中显示为2018年12月1日。

如何防止这种情况?我只是想获取用户在日历中设置的日期。

function str2date($str,$format="Y-m-d") {
    return date($format, strtotime($str));
}

2 个答案:

答案 0 :(得分:2)

只需使用str_replace从字符串中删除逗号,strtotime即可正确解析它。

function str2date($str,$format="Y-m-d") {
    return date($format, strtotime(str_replace(",", "", $str)));
}

https://3v4l.org/ZP93WH

答案 1 :(得分:1)

您无需删除或更改格式。 只需使用DateTime:

$dateTime = DateTime::createFromFormat("d M, Y", $date);

然后,如果您需要时间戳记,请使用

$dateTime->getTimestamp();