Java 在2月28日之前再加上1个月,结果应为3月31日

Java 在2月28日之前再加上1个月,结果应为3月31日,java,calendar,jodatime,gregorian-calendar,Java,Calendar,Jodatime,Gregorian Calendar,我试图在日期上加1个月,但问题是当我有一个日期2月28日,然后我再加一个月,结果是3月28日。它将于3月31日结束。就像我从4月30日开始一样,我应该在5月31日结束,而不是5月30日。我尝试使用Jodatime的plusMonths()和java.util.date的add(),但仍然存在相同的问题 你的期望完全是错误的:如果存在的话,它应该移到下个月的同一天。不管怎样,代码怎么知道你希望2月28日是“2月的最后一天”?它的合法意思是“2月28日”。假设你从1月28日开始,然后加上一个月,再加

我试图在日期上加1个月,但问题是当我有一个日期2月28日,然后我再加一个月,结果是3月28日。它将于3月31日结束。就像我从4月30日开始一样,我应该在5月31日结束,而不是5月30日。我尝试使用Jodatime的plusMonths()和java.util.date的add(),但仍然存在相同的问题

你的期望完全是错误的:如果存在的话,它应该移到下个月的同一天。不管怎样,代码怎么知道你希望2月28日是“2月的最后一天”?它的合法意思是“2月28日”。假设你从1月28日开始,然后加上一个月,再加上一个月,你会期望什么结果


你所需要的可以通过与下个月的第一天一起工作,然后向后移动一天来实现。

你的期望完全是错误的:它应该移动到下个月的同一天,如果存在的话。不管怎样,代码怎么知道你希望2月28日是“2月的最后一天”?它的合法意思是“2月28日”。假设你从1月28日开始,然后加上一个月,再加上一个月,你会期望什么结果


你所需要的可以通过与下个月的1号一起工作,然后向后移动一天来实现。

那么,如果是2月2日,再加上一个月,你会期望什么日期?那就是3月2日。2013年2月28日会提前到2013年3月31日,但2016年2月28日会提前到2016年3月28日吗?@EricJablow是的。有可能吗?如果是2月2日,你再加上一个月,你会期望什么日期?那就是3月2日。2013年2月28日会提前到2013年3月31日,但2016年2月28日会提前到2016年3月28日吗?@EricJablow是的。有可能吗?如果日期从1月28日开始,应该在2月28日结束,那么下个月就是3月28日。但是如果日期从1月31日开始,下个月应该是2月28日,然后是3月31日。这可能吗?你提出的逻辑必须是物体状态的完整历史的函数。这也将是非常具体的你的愿望。当然,没有公共图书馆能满足这种需求。如果日期从1月28日开始,应该在2月28日结束,那么下个月就是3月28日。但是如果日期从1月31日开始,下个月应该是2月28日,然后是3月31日。这可能吗?你提出的逻辑必须是物体状态的完整历史的函数。这也将是非常具体的你的愿望。当然,没有公共图书馆能满足这种需求。