Tan*_*may 5 php datetime laravel php-carbon
当我们传递这样一个2019-01-01没有时间的日期值时10:00:00,时间默认为00:00:00. 所以最后 db 兼容值被转换成这个:2019-01-01 00:00:00。我怎样才能强制默认它23:59:00呢?
示例:我需要设置一个expiry_date属性,但如果我只接受2019-01-08用户输入的日期,用户将假设他们将一整天作为到期日期,而实际上它会在第一秒到期,2019-01-08因为的隐式默认时间00:00:00。
我如何克服这个问题?我怎样才能设置一个mutator来expiry_date把它2019-01-01 00:00:00变成这个2019-01-01 23:59:00?
只需使用以下内容:
$expiryDate = Carbon::createFromFormat('Y-m-d', $date)->endOfDay()->toDateTimeString();
Run Code Online (Sandbox Code Playgroud)
这将获取日期(如果需要,更新日期格式),切换到一天结束并将结果对象转换为日期时间字符串。
或者,将其用作属性设置器:
/**
* @param $value
*/
public function setExpiryDateAttribute($value)
{
$this->attributes['expiry_date'] = Carbon::createFromFormat('Y-m-d', $value)
->endOfDay()
->toDateTimeString();
}
Run Code Online (Sandbox Code Playgroud)