存储时间戳,时间00:00:00

时间:2014-12-29 17:32:44

标签: php mysql datetime php-carbon

我想在数据库中存储一个时间戳,时间分量为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"]); 

将当前时间添加到日期,此时我仅提供没有时间指定的日期 我需要这个,因为我需要从数据库中检索内部整数,这应该是一天的开始。

什么是存储这一天的最佳方式'?

4 个答案:

答案 0 :(得分:11)

我通常会通过电话设置日期,然后使用

将时间重置为00:00
Carbon::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
);