don*_*ona 2 php datetime laravel php-carbon
在PHP中检查这个自解释代码:
现实:
$dateTime = Carbon::createFromDateTime(2017, 2, 23);
echo $dateTime; // 2017-02-23 00:00:00
echo $dateTime->startOfYear(); // 2017-12-31 23:59:59
echo $dateTime; // 2017-12-31 23:59:59
Run Code Online (Sandbox Code Playgroud)
请注意,4号线,价值$dateTime为2017-12-31 23:59:59.那是因为在第3行.
但为什么?我知道Carbon的startOfYear()是一个修饰符,但是我们怎么能在不修改自己的情况下获得一年的开始日期
预期:
$dateTime = Carbon::createFromDateTime(2017, 2, 23);
echo $dateTime; // 2017-02-23 00:00:00
echo $dateTime->startOfYear(); // 2017-12-31 23:59:59
echo $dateTime; // 2017-02-23 00:00:00
Run Code Online (Sandbox Code Playgroud)
在上面,注意第4行.实际上,第4行输出2017-12-31 23:59:59.
就像@SteD提到的那样,您可以使用复制功能来获取现有实例而不是修改它.
$date = Carbon::createFromDate(2017, 2, 23);
$startOfYear = $date->copy()->startOfYear();
$endOfYear = $date->copy()->endOfYear();
Run Code Online (Sandbox Code Playgroud)
使用copy()
来自文档
您还可以创建现有 Carbon 实例的 copy()。正如预期的那样,日期、时间和时区值全部复制到新实例。
$dt = Carbon::now();
echo $dt->diffInYears($dt->copy()->addYear()); // 1
// $dt was unchanged and still holds the value of Carbon:now()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6328 次 |
| 最近记录: |