首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储日期时间修改+格式

存储日期时间修改+格式
EN

Stack Overflow用户
提问于 2022-03-02 11:39:50
回答 1查看 22关注 0票数 1

我有一个要求,用户希望能够将“日期修饰符”字符串保存到数据库中,然后将其与应用程序中的其他日期一起使用。

例如-

代码语言:javascript
复制
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} --这不起作用/我不知道实现这一目标的日期修饰符是什么样子。

代码语言:javascript
复制
$date = '02/03/2022';
$date->modify($fifth_of_month);
// outputs 05/03/2022

我的下一个想法是也存储date_format,这样我就不会modify这个日期了;但是我会把它格式化为$date->format('Y-m-05')

是否有更好的方法来解决这个问题,因为它看起来会很快变得非常混乱?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-02 11:57:43

用户可以有无休止的奇怪的请求这样的一个选项。例如:“下一个闰年2月的最后一天”。好的,我可能做得太过了,但是这些日期可以是相对的,绝对的,或者是混合的。预测用户想要什么总是很困难的。你得灵活点。

在这种情况下,我甚至不尝试找到一个可爱的解决方案,因为总有一天你必须放弃它,重新开始。我的解决方案?简单的switch

代码语言:javascript
复制
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; 
}

(代码只是一个例子,并不意味着正确)

通过这种方式,您可以轻松地合并任何可能出现的奇怪请求,并保留现有的工作。这不是最短的解决方案,也不是最聪明的,但它是最实际的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71322066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档