我有一個要求,用戶希望能夠將“日期修飾符”字串保存到資料庫中,然后將其與應用程式中的其他日期一起使用。
例如 -
id name date_modifier
1 Add 1 Year 1 year
2 Last Day Of Month last day of this month
// simplified; using DateTime
echo $date->modify($date_modifier);
// today = 02/03/2022
// Add 1 Year = 02/03/2023
// Last day of month = 31/03/2023
本質上,我將日期修飾符字串傳遞給 DateTime 物件以對其進行修改。
這似乎作業正常,但我遇到了問題 -
例如; 一些要求是5th of {whatever date is supplied}
這不起作用/我不知道實作此目的的日期修飾符是什么樣的。
$date = '02/03/2022';
$date->modify($fifth_of_month);
// outputs 05/03/2022
我的下一個想法是也要存盤date_format,這樣我就不會modify約會了;但我會將其格式化為$date->format('Y-m-05')
有沒有更好的方法來解決這個問題,因為它看起來很快就會變得非常混亂?
uj5u.com熱心網友回復:
用戶可以對這樣的選項提出無盡的奇怪請求。例如:“下一個閏年二月的最后一天”。好的,我可能做得過火了,但這些日期可以是相對的、絕對的或混合的。預測用戶想要什么總是很困難的。你需要靈活。
在這種情況下,我通常什至不會嘗試找到一個可愛的解決方案,因為總有一天你必須放棄它并重新開始。我的解決方案?簡單的switch:
switch ($wantedModification) {
case 'Add 1 year' : $newDate = $date->modify(' 1 year');
break;
case 'Last Day Of Month' : ....
break;
case '5th of next Month' : ....
break;
default : alert('Sorry, I forgot to implement this choice...');
break;
}
(代碼只是一個例子,并不意味著正確)
通過這種方式,您可以輕松地合并任何可能出現的奇怪請求,并且您可以保留現有作業。這不是最短的解決方案,也不是最聰明的解決方案,但它是最實用的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/436870.html
下一篇:如何修復字符日期并在R中添加零?
