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條經驗 獲得超16個贊
可以做到,但你要么需要在變量中捕獲它,要么使用 {} 來分隔代碼
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 關注
- 180 瀏覽
添加回答
舉報