我想在数据库中存储一个时间戳,时间分量为00:00:00
以下代码:
$start_date = Carbon::createFromFormat('d-m-Y', $date_interval["start_date"]);
$end_date = Carbon::createFromFormat('d-m-Y', $date_interval["end_date"]);
将当前时间添加到日期,此时我仅提供没有时间指定的日期 我需要这个,因为我需要从数据库中检索内部整数,这应该是一天的开始。
什么是存储这一天的最佳方式'?
答案 0 :(得分:11)
我通常会通过电话设置日期,然后使用
将时间重置为00:00Carbon::setTime(0, 0, 0); // from the parent, DateTime class
在类中,还有一个Carbon :: startOfDay()方法,它将设置适当的值。
public function startOfDay()
{
return $this->hour(0)->minute(0)->second(0);
}
答案 1 :(得分:11)
为了安全起见,让Carbon使用->endOfDay()
或->startOfDay()
决定当天的结束或开始。选择更适合你的选择。
Carbon::createFromFormat('d-m-Y', $date_interval["start_date"])->endOfDay();
Carbon::createFromFormat('d-m-Y', $date_interval["start_date"])->startOfDay();
答案 2 :(得分:0)
你不应该这样做。
设置start_date
DATE NULL DEFAULT NULL`
你应该让MySQL默认为NULL而不是0000-00-00
答案 3 :(得分:0)
Carbon::createFromFormat()
与它的父项不同,因为缺少的部分设置为当前日期或时间而不是零。
为了使其表现得像\DateTime::createFromFormat()
,请按照手册(https://www.php.net/manual/en/datetime.createfromformat.php)中的说明使用|
或!
格式的字符。
示例:
$midnight = Carbon::createFromFormat(
'Y-m-d|', // or: '!Y-m-d'
$date
);