这是我的价值,我将在我的数据库中插入
[phoneinterview] => 2018-05-16 10:28 PM
在我的数据库中,我有这样的字段
phoneinterview timestamp
但它的插入如下:
2018-05-16 10:28:00
其实我想这样插入:
2018-05-16 10:28 PM
答案 0 :(得分:1)
确定。当您选择用于存储日期的timestamp或datetime数据类型时,它不会将AM和PM值存储在数据库表字段中。对此最好的解决方案是检索日期并将其与AM / PM手动转换为日期和时间。
另一种解决方案是使用varchar的数据类型而不是时间戳,但这是不值得推荐的。
答案 1 :(得分:1)
如果您在数据库中使用datetime
字段,则不能,但如果将字段更改为varchar
,则可以按照自己喜欢的方式保存。我会建议反对它。为什么要保存格式化的时间?最佳做法是将日期保存在datetime
字段中,然后在您希望按照您希望的方式显示时。在Laravel你可以使用这样的mutator来做到这一点:
public function getPhoneinterviewAttribute() {
return \Carbon\Carbon::now(
$this->attributes['phoneinterview']
)->format('g:i A');
}
另一方面:当您扩展到人们不使用AM / PM的区域时,您可以轻松地将其格式化为其语言环境。
答案 2 :(得分:1)
MySQL使用格式'Y-m-d H:i:s'
来存储日期,因此如果您正在使用除此之外的任何内容,则需要先将其转换为此格式。这可以通过DateTime::createFromFormat():
$date = DateTime::createFromFormat('Y-m-d g:i a', '2018-05-16 10:28 PM');
这将创建一个可以轻松为MySQL格式化的DateTime对象:
$date->format('Y-m-d H:i:s');
答案 3 :(得分:1)
当您使用datetime
数据类型时,它正在存储2018-05-16 10:28:00
。但是如果要存储AM/PM
,则需要使用varchar
数据类型。
我建议您在获取时间戳数据时使用->format();
。这将根据您的意愿转换日期时间格式。
目前,您希望在时间之后显示AM/PM
,请使用它:->format('g:i A');
这将显示10:28 PM
之类的时间。
希望这可以帮助你!!