以下日期示例的正确日期格式是什么:“ 2018-06-06 14:03:57.973468 +00:00”

时间:2018-12-13 15:51:59

标签: php laravel date timestamp laravel-nova

我正在将PHP与laravel nova一起使用来在数据库中创建模型。我的数据库已经有其数据,但是在将日期类型的列中插入值时遇到一些问题。

我的数据库是一个以以下格式存储日期的pgsql:2018-06-06 14:03:57.973468 +00:00

但是,当我尝试通过Laravel nova admin在我的行中创建一行时,它会尝试在formart中插入以下日期:2018-12-22 14:00:00+

formart的日期缺少毫秒和时区,我想知道必须在$dateFormat变量中设置的日期格式:

protected $dateFormat = 'Y-m-d H:i:s+';

public function getDateFormat()
{
    return 'Y-m-d H:i:s+';
}

正如您在代码中看到的那样,我使用的是Y-m-d H:i:s+格式,但是它仅在从数据库中获取日期时才有效,当我尝试插入一行时会返回以下错误:

SQLSTATE[22007]: Invalid datetime format: 7 ERROR:  invalid input syntax for type timestamp with time zone: "2018-12-21 14:00:00+" (SQL: insert into "offer" ("column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "column_name", "created_at") values (, , , , , , , , , , , , , , , , , 2018-12-21 14:00:00+, 2018-12-22 14:00:00+, 283, 2018-12-13 15:44:03+, 2018-12-13 15:44:03+) returning "id")

修改1

我将formart的日期更新为Y-m-d H:i:s.u P,并且错误更改了。我使用以下函数检查日期和formart日期是否匹配:

function validateDate($date, $format = 'Y-m-d H:i:s.u P')
{
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) == $date;
}

validateDate('2018-06-06 14:03:57.973468 +00:00'); // => true
validateDate('2018-06-06 14:03:57.973468 +00:0022'); // => false

错误更改为Unexpected data found. Data missing

2 个答案:

答案 0 :(得分:1)

就像您使用Laravel一样,尝试使用Carbon来处理它。

修补匠的例子。

>>> use Carbon\Carbon;
>>> $date = Carbon::parse('2018-06-06 14:03:57.973468 +00:00');
=> Carbon\Carbon @1528293837 {#3039
     date: 2018-06-06 14:03:57.973468 +00:00,
   }
>>> $date->format('Y-m-d H:i:s');
=> "2018-06-06 14:03:57"

也请删除+符号,因为您没有以时间格式传递时区。

答案 1 :(得分:0)

使用Y-m-d H:i:s P格式。

protected $dateFormat = 'Y-m-d H:i:s P';

public function getDateFormat()
{
    return 'Y-m-d H:i:s P';
}

您可以检查http://php.net/manual/en/function.date.php

上的所有可用格式