|
|
1
112
为什么不是虫子:当前行为是正确的。内部发生以下情况:
要得到你想要的是:手动检查下个月。然后加上下个月已经过的天数。 我希望你能自己编写代码。我只是想知道该怎么办。 PHP 5.3方式:
此脚本将正确输出
|
|
|
2
14
这是另一个完全使用DateTime方法的紧凑解决方案,在不创建克隆的情况下就地修改对象。
它输出:
|
|
|
3
10
|
|
|
4
6
我的解决方案是:
|
|
|
5
4
我同意OP的观点,即这是违反直觉和令人沮丧的,但决定什么也是如此
您从2015-01-31开始,希望添加一个月6次,以获得发送电子邮件时事通讯的计划周期。考虑到OP最初的期望,这将返回:
请注意,我们正在期待
所以假设我们的一个用户订阅了另一个新闻稿,从2015年1月30日开始。什么是直观的日期
这将是好的,除非我们的用户在同一天得到两个时事通讯。让我们假设这是一个供应方而不是需求方的问题,我们不担心用户会因为在同一天收到两份时事通讯而烦恼,而是我们的邮件服务器无法负担发送两倍多时事通讯的带宽。考虑到这一点,我们将“+1个月”的另一种解释返回为“在每月的第二天到最后一天发送”,返回:
现在我们已经避免了与第一盘的任何重叠,但我们也以4月和6月29日结束,这当然符合我们最初的直觉
1月30日
考虑到最后两组,如果其中一个日期不在下一个月的实际日期范围内(因此,在第一组中回滚到2月28日和4月30日),那么简单地回滚其中一个日期并不困难,并且不会因为“月的最后一天”与“月的第二天到最后一天”模式的偶尔重叠和偏离而失眠。但希望图书馆在“最美/最自然”、“02/31和其他月份的数学解释”之间做出选择,而“相对月初或上月”总是会以某人的期望得不到满足而结束,一些日程安排需要调整“错误”的日期,以避免“错误”解释带来的现实问题。
所以再说一遍,虽然我也希望
这里有一个替代的解决方案,它仍然像其他解决方案一样笨重,但我认为它有很好的效果:
这不是最佳的,但基本的逻辑是:如果加上1个月的结果不是预期的下个月,那就取消这个日期,改为加上4周。以下是两个测试日期的结果: 1月31日
1月30日
(我的代码乱七八糟,在多年的情况下无法工作。我欢迎任何人用更优雅的代码重写解决方案,只要底层前提保持不变,即如果+1个月返回一个时髦的日期,则使用+4周代替。) |
|
|
6
4
我创建了一个函数,返回一个DateInterval,以确保添加一个月显示下一个月,并删除该月之后的天数。
|
|
|
7
4
结合沙米托马尔的回答,这可能是为了“安全地”增加几个月:
|
|
8
2
我使用以下代码找到了一个较短的方法:
|
|
|
9
1
下面是 Juhana's answer 在相关问题中:
此版本需要
下面是一些测试算法的驱动程序代码:
输出:
|
|
|
10
1
这是的改进版本 Kasihasi's answer 在一个相关的问题上。这将正确地增加或减少一个日期的任意月数。
例如:
将输出:
|
|
|
11
1
公认的答案已经解释了为什么这不是一个but,而其他一些答案提供了一个使用php表达式的简洁解决方案,如
不过,解决办法很简单。首先,您应该找到反映您的问题空间的有用抽象。在这种情况下,这是一个
因此,在您的情况下,您需要的实现是
一个月的最后几天也是一样。更多这种方法的例子, read this . |
|
|
12
0
如果您只是想避免跳过一个月,您可以执行类似这样的操作来获取日期,并在下个月运行一个循环,将日期减少1,然后重新检查直到一个有效的日期,其中$start\u calculated是strotime的有效字符串(即mysql datetime或“now”)。这会发现一个月的最后一分钟到午夜,而不是跳过一个月。
|
|
|
13
0
DateTime类的扩展,它解决了添加或减去月份的问题 |
|
|
14
0
如果使用
|
|
|
15
0
我需要为“去年的这个月”定个日期,当这个月是闰年的二月时,它很快就变得不愉快了。不过,我相信这是可行的。。。:-/诀窍似乎是把你的零钱放在每月的第一天。
|
|
16
0
|
|
17
0
将输出
|
|
|
18
0
连续几天:
重要提示:
|
|
|
19
0
实际上,也可以使用date()和strotime()来完成。例如,要将1个月添加到今天的日期:
如果你想使用datetime类,那也很好,但是这也很简单。 more details here |
|
|
20
-2
|
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Jas Mahay · 使用日期和日历:需要社区帮助来提高工作表的效率 1 年前 |
|
|
ViSa · 如何从Pandas的列中提取日期? 1 年前 |
|
|
Wolfspirit · 你如何确定一个时间点是否在一个时间段内? 1 年前 |
|
Steven · Python的美国/纽约时间偏移显示-04:56 1 年前 |