Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用日期和日历_Java_Date_Calendar - Fatal编程技术网

Java 使用日期和日历

Java 使用日期和日历,java,date,calendar,Java,Date,Calendar,我有一个日期选择器,用户在其中选择一个日期,然后选中一个复选框,确定他希望从哪种类型的时段获取日期。例如: 用户选择1。选择“月”复选框在这种情况下,结束日期将增加1,即使这听起来足够简单,它也会慢慢地开始让我烦恼 问题是Java没有一个很好的date对象来处理这类事情,所以我想我会使用Calendar,但是增加一个Calendar日期并不容易,例如下面的例子: endDate.set(startDate.YEAR, startDate.MONTH+1, startDate.DATE); 理论

我有一个日期选择器,用户在其中选择一个日期,然后选中一个复选框,确定他希望从哪种类型的时段获取日期。例如:

用户选择1。选择“月”复选框在这种情况下,结束日期将增加1,即使这听起来足够简单,它也会慢慢地开始让我烦恼

问题是Java没有一个很好的date对象来处理这类事情,所以我想我会使用Calendar,但是增加一个Calendar日期并不容易,例如下面的例子:

endDate.set(startDate.YEAR, startDate.MONTH+1, startDate.DATE);
理论上,这将使月份增加一个,比开始日期大一个。这在从12月开始执行的大约90%的月份中有效,如果在12月将月份增加1,则整数月份返回13对于
startDate.DATE也会发生同样的情况
起始日期年


我的问题是有没有更简单的方法?我可以造出大量的If语句,但我真的认为这有点多余。

这里的标准建议是查看(有关更多信息,请参阅)。它是一个更加一致/功能更加强大的API,没有困扰标准Java日期/格式API的线程问题,因此被广泛使用和接受

根据以上内容,我建议您:

LocalDate d = ...
LocalDate nd = d.plusMonths(1);

以上内容将正确处理月/年滚动。

这里的标准建议是查看(有关更多信息,请参阅)。它是一个更加一致/功能更加强大的API,没有困扰标准Java日期/格式API的线程问题,因此被广泛使用和接受

根据以上内容,我建议您:

LocalDate d = ...
LocalDate nd = d.plusMonths(1);

上述操作将正确处理月/年滚动。

您可以使用
Calendar.add()
向日历值添加值,例如
Calendar.add(Calendar.month,1)
这将添加一个月,并考虑到一月在十二月之后。

您可以使用
Calendar.add()
向日历值添加值,例如,
Calendar.add(Calendar.MONTH,1)
这将添加一个月,并考虑到一月在十二月之后。

使用
add
方法
java.util.Calendar

endDate.set(startDate.YEAR, startDate.MONTH, startDate.DATE);
if(some_condition) {
   endDate.add(Calendar.MONTH, 1);
}

使用
java.util.Calendar
add
方法

endDate.set(startDate.YEAR, startDate.MONTH, startDate.DATE);
if(some_condition) {
   endDate.add(Calendar.MONTH, 1);
}

@svz该月从0开始(一月)。@svz该月从0开始(一月)。如果日期为例如31,则该月也将增加。一月份?是的。它会把你带到28号。或29。二月份的。那么,如果在31月份的基础上再加上一个月,你想要什么呢。一月份?三月二号还是三号?我误读了你的声明,我以为是日期,1:)对不起!如果日期是例如31,那么这个月也会增加。一月份?是的。它会把你带到28号。或29。二月份的。那么,如果在31月份的基础上再加上一个月,你想要什么呢。一月份?三月二号还是三号?我误读了你的声明,我以为是日期,1:)对不起!在这种情况下,不是endDate.add(endDate.MONTH,1)
Calendar.MONTH
只是表示月份的静态变量。这行“开始日期。年,开始日期。月,开始日期。日期”我刚从你们那个里抄过来。关键是您需要使用
add
方法
Calendar
。在这种情况下,不是endDate.add(endDate.MONTH,1)
Calendar.MONTH
只是表示月份的静态变量。这行“开始日期。年,开始日期。月,开始日期。日期”我刚从你们那个里抄过来。关键是你需要使用
add
方法
Calendar
。如果我使用eclipse,我必须下载插件吗?不。只要下载jar,或者在pom.xml中引用它,如果你使用Mavendo,我必须下载插件如果我使用eclipse?不。只要下载jar,或者在pom.xml中引用它,如果你使用Maven