3 回答
TA贡献1797条经验 获得超4个赞
您不需要动态函数名称。这样的代码很难理解。就这样做:
$test_date = Carbon\Carbon::today(); //2020-06-10
$repetition = 3;
$repetition_frequency = 'Year';
$test_date->modify($repetition." ".$repetition_frequency);
echo (string)$test_date;
输出:
2023-06-10 00:00:00
除了“年”,它还适用于日、周、月等(参见单位相关格式)你甚至不需要 Carbon,DateTime 做得很好。
TA贡献1853条经验 获得超9个赞
只需使用addUnit
开箱即用的方法:
Carbon::now()->addUnit($repetition_frequency, $repetition)
它会无差别地采用Day
, day
, days
cases/pluralization 和 Carbon 的任何支持单位。
TA贡献1801条经验 获得超15个赞
可以做到,但你要么需要在变量中捕获它,要么使用 {} 来分隔代码
ex: $repetition_frequency = 'Year';
$function = 'add'.$repetition_frequency;
$test_date->$function($repetition);
还要注意开箱即用的日期添加功能,例如修改和添加月份,如果您要将 1 个月添加到 2020-01-31,您最终会得到 2020-03-03,这可能不是您想要的结果。addMonthNoOverflow如果期望的结果应该是 2020-02-29,Carbon 带有一个方便的函数。
- 3 回答
- 0 关注
- 143 浏览
添加回答
举报