Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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 - Fatal编程技术网

Java 如何查找当月最后一天的天数(整数)

Java 如何查找当月最后一天的天数(整数),java,date,Java,Date,我有具体的日期,我想找到本月最后一天的数字。我使用以下代码,但总是返回当前日期 DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = (Date) sdf.parse(year+"-"+(month<10?("0"+month):month)+"-01"); Calendar calendar = Calendar.getInstance(); calendar.setTime

我有具体的日期,我想找到本月最后一天的数字。我使用以下代码,但总是返回当前日期

    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    Date date = (Date) sdf.parse(year+"-"+(month<10?("0"+month):month)+"-01");


    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);

    calendar.add(Calendar.MONTH, 1);
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    calendar.add(Calendar.DATE, -1);

    Date dt = (Date) calendar.getTime(); -> dt is return current date always
示例:我的日期=2018/04/30,我想找到30

我在现场找不到答案


Thnx

您可以使用日历,如下所示:

calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
或者,如果你有乔达,通常哪一个更好:

DateTime d = new DateTame(dt);
d.dayOfMonth().getMaximumValue();

您可以使用日历,如下所示:

calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
或者,如果你有乔达,通常哪一个更好:

DateTime d = new DateTame(dt);
d.dayOfMonth().getMaximumValue();
有具体的日期,我想找到本月最后一天的数字

这就是你要找的

Calendar cal = Calendar.getInstance();
cal.setTime(parsedDate);
cal.getActualMaximum(Calendar.DAY_OF_MONTH);
有具体的日期,我想找到本月最后一天的数字

这就是你要找的

Calendar cal = Calendar.getInstance();
cal.setTime(parsedDate);
cal.getActualMaximum(Calendar.DAY_OF_MONTH);

首先,你如何利用这一年

使用Java Time LocalDate应该很简单:

import java.time.*;
import static java.time.Month.*;
import static java.time.temporal.TemporalAdjusters.*;
import static java.time.temporal.ChronoField.*;

int lastDay = LocalDate.now()   // or whatever date you want
                  .with(Month.of(yourMonth))
                  .with(lastDayOfMonth())
                  .get(DAY_OF_MONTH);

 // or, if you have year and month, and want to find the corresponding last day
int lastDay = LocalDate.of(yourYear, yourMonth, 1)
                  .with(lastDayOfMonth())
                  .get(DAY_OF_MONTH);

首先,你如何利用这一年

使用Java Time LocalDate应该很简单:

import java.time.*;
import static java.time.Month.*;
import static java.time.temporal.TemporalAdjusters.*;
import static java.time.temporal.ChronoField.*;

int lastDay = LocalDate.now()   // or whatever date you want
                  .with(Month.of(yourMonth))
                  .with(lastDayOfMonth())
                  .get(DAY_OF_MONTH);

 // or, if you have year and month, and want to find the corresponding last day
int lastDay = LocalDate.of(yourYear, yourMonth, 1)
                  .with(lastDayOfMonth())
                  .get(DAY_OF_MONTH);

如果使用Java8或更高版本,请不要使用日历。如果使用java 6或7,您可能需要考虑使用。无论哪种情况,都可以使用Java时间API

使用Java时间 因为输入是int year和int month,所以使用

要查找月份的最后一天号码,请致电

要在月底获取日期,请致电

演示

输出

29 2020-02-29 利用乔达时间 如果您没有Java 8,并且已经在使用,请按以下方式操作:

演示

输出

29 2020-02-29 使用日历 如果您坚持使用日历,请按照其他答案中的说明致电

因为输入是int year和int month,所以不要构建和解析字符串,直接设置日历字段即可。请注意,日历中的月份是以零为基础的

演示

输出

29 2020-02-29
如果使用Java8或更高版本,请不要使用日历。如果使用java 6或7,您可能需要考虑使用。无论哪种情况,都可以使用Java时间API

使用Java时间 因为输入是int year和int month,所以使用

要查找月份的最后一天号码,请致电

要在月底获取日期,请致电

演示

输出

29 2020-02-29 利用乔达时间 如果您没有Java 8,并且已经在使用,请按以下方式操作:

演示

输出

29 2020-02-29 使用日历 如果您坚持使用日历,请按照其他答案中的说明致电

因为输入是int year和int month,所以不要构建和解析字符串,直接设置日历字段即可。请注意,日历中的月份是以零为基础的

演示

输出

29 2020-02-29

如何返回月的最后一天?我也使用了此代码。但是给了我当前日期的月份。@ScaryWombat没错,我没有立即注意到最后一天的要求。如何返回月份的最后一天?我也使用了此代码。但给了我当前日期的月日。@ScaryWombat是的,我没有立即注意到最后一天的要求。可能的重复我无法重现您的问题。2018年4月30日星期一00:00:00 CEST。calendar.getCalendar.DAY\u OF_MONTH给了我30。我无法重现您的问题。2018年4月30日星期一00:00:00 CEST。calendar.getCalendar.DAY\u OF_MONTH给我30。获取每月的第一天,并回滚一天您应该编辑答案并添加该文本,而不是将其作为注释保留。然后删除评论。获取每月的第一天,并回滚一天您应该编辑答案并添加该文本,而不是将其保留为评论。然后删除注释。您应该使用YearMonth类。看。没错,在这种情况下,YearMonth实际上更好。我在编写解决方案时考虑了解析输入日期…:P我仍然更喜欢这种方式,而不是在任何时候使用日历。日历早已过时,设计也很糟糕。同意YearMonth是进一步的小改进+给你们两个一个。@OleV.V。彼此彼此。对于任何我控制的项目,我只考虑使用java时间java8+或JoDa/310后端Java7或更早。Date可能是我将使用的唯一遗留类。根本没有理由使用Calendar,您应该使用YearMonth类。看。没错,在这种情况下,YearMonth实际上更好。我在编写解决方案时考虑了解析输入日期…:P我仍然更喜欢这种方式,而不是在任何时候使用日历。日历早已过时,设计也很糟糕。同意YearMonth是进一步的小改进+给你们两个一个。@OleV.V。彼此彼此。对于任何我控制的项目,我只考虑使用java时间java8+或JoDa/310后端Java7或更早。Date可能是我将使用的唯一遗留类。根本没有理由使用日历