使用DateTime :: createFromFormat时忽略时间部分

时间:2018-11-13 10:13:09

标签: php datetime

我有两种格式的数据库日期:

$tests[] = "2018-01-01";
$tests[] = "2018-01-01 12:34:56.789";

是否可以使用DateTime::createFromFormat将字符串转换为DateTime并忽略时间部分?我想用最少的代码来处理这两种情况。

1 个答案:

答案 0 :(得分:0)

您可以使用以下格式:

"!Y-m-d+"

像这样:

echo DateTime::createFromFormat("!Y-m-d+", "2018-01-01")             ->format(DateTime::ATOM); // 2018-01-01T00:00:00+05:00
echo DateTime::createFromFormat("!Y-m-d+", "2018-01-01 12:34:56.789")->format(DateTime::ATOM); // 2018-01-01T00:00:00+05:00
  • !字符会将其左侧的所有日期和时间组件重置为1970-01-01 00:00:00。没有它,未在格式中指定的组件将设置为当前时间的组件。
  • +字符指示解析器忽略日期字符串中的结尾字符。