Vin*_*ney 3 php laravel php-carbon
我有一个碳实例
$a = Carbon\Carbon::now();
Carbon\Carbon {
"date": "2018-06-11 10:00:00",
"timezone_type": 3,
"timezone": "Europe/Vienna",
}
Run Code Online (Sandbox Code Playgroud)
和CarbonInterval实例
$b = CarbonInterval::make('1month');
Carbon\CarbonInterval {
"y": 0,
"m": 1,
"d": 0,
"h": 0,
"i": 0,
"s": 0,
"f": 0.0,
"weekday": 0,
"weekday_behavior": 0,
"first_last_day_of": 0,
"invert": 0,
"days": false,
"special_type": 0,
"special_amount": 0,
"have_weekday_relative": 0,
"have_special_relative": 0,
}
Run Code Online (Sandbox Code Playgroud)
如何在碳实例中添加间隔,以便获得
Carbon\Carbon {
"date": "2018-07-11 10:00:00",
"timezone_type": 3,
"timezone": "Europe/Vienna",
}
Run Code Online (Sandbox Code Playgroud)
我知道解决方案涉及到将其转换为这样的timestamp或Datetime类
strtotime( date('Y-m-d H:i:s', strtotime("+1 month", $a->timestamp ) ) );
Run Code Online (Sandbox Code Playgroud)
这是我目前正在使用的方式,但我正在通过官方网站搜索一种更“节能”的方式,但在此上找不到任何内容,因此需要一些帮助。
更新:仅为您提供上下文在前端,我有两个控件,第一个是间隔(天,月,年),第二个是文本框,因此根据组合,我会动态生成字符串,例如“ 2 days”,“ 3 months”,然后得到喂间隔课程
我不知道添加间隔的内置函数,但是应该工作的是将间隔的总秒数添加到日期:
$date = Carbon::now(); // 2018-06-11 17:54:34
$interval = CarbonInterval::make('1hour');
$laterThisDay = $date->addSeconds($interval->totalSeconds); // 2018-06-11 18:54:34
Run Code Online (Sandbox Code Playgroud)
编辑:找到了更简单的方法!
$date = Carbon::now(); // 2018-06-11 17:54:34
$interval = CarbonInterval::make('1hour');
$laterThisDay = $date->add($interval); // 2018-06-11 18:54:34
Run Code Online (Sandbox Code Playgroud)
之所以Carbon可行DateTime,CarbonInterval是因为它基于和基于DateInterval。有关方法参考,请参见此处。