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,我有一个特定的日期: 01/10/2017(mm/dd/yyyy) Calendar c = c.getInstance(); c.setTime(date); 现在,我使用下面的代码来指出这个月的最后一天: c.set(Calendar.Date, c.getActualMaximum(Calendar.Date)); 预计产量:2017年1月31日 原始输出:2017年1月2日 我没有得到预期的输出。它会在下个月的第一天还给我 有人能帮我吗?您最好在这里使用Java 8的新日期时间功

我有一个特定的日期:

01/10/2017(mm/dd/yyyy)

Calendar c = c.getInstance();

c.setTime(date);
现在,我使用下面的代码来指出这个月的最后一天:

c.set(Calendar.Date, c.getActualMaximum(Calendar.Date));
预计产量:2017年1月31日

原始输出:2017年1月2日

我没有得到预期的输出。它会在下个月的第一天还给我


有人能帮我吗?

您最好在这里使用Java 8的新日期时间功能:

LocalDate date = LocalDate.of(2000, Month.OCTOBER, 15);
LocalDate lastOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
System.out.printf("last day of Month: %s%n", lastOfMonth );
是的,理论上你也可以使用日历对象,自己做各种低级操作。但机会是:你会弄错的。。。好吧,除非你仔细看并听从那里的建议


但正如Basil正确指出的那样:310项目非常接近java.time(因为后者的设计与前者相匹配);310可以“移植”到Java7。因此,如果有不止一个地方需要处理日期,我会仔细研究:通过使用“合理”的日期/时间库,让你的生活更轻松。

我对mm/dd/yyyy有疑问。试试这个

Date d = new SimpleDateFormat("MM/dd/yyyy").parse("01/10/2017");
Calendar c = Calendar.getInstance();
c.setTime(d);
c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));
System.out.println(c.getTime());
它给出了预期日期:


2017年1月31日星期二00:00:00 EET

记录如下:在将代码放入帖子时,请注意使用标记;不要把所有的东西都当作普通的文本放进去!请在发布之前搜索堆栈溢出。实际上,我是在Java 7环境中开发的。然后我会说:指出的DUP应该可以回答您的所有问题。有关Java 6和Java 7的大部分Java.time功能的后端端口,请参阅该项目。在ThreeTenABP中进一步适应Androidproject@BasilBourque好主意;谢谢,包括在我的回答中并表示感谢;-)