如何在java中获取给定月份的最小和最大日期

问题描述 投票:0回答:6

如何使用 java.util.Calendar 在 java 中获取给定月份的最小和最大日期。

java datetime calendar
6个回答
5
投票

最小值始终是本月 1 日。可以通过将月份加 1 并从日历日字段中减去 1 来确定最大值。


3
投票

这可以这样做:

c = ... // get calendar for month you're interested in     
int numberOfDays = c.getActualMaximum(Calendar.DAY_OF_MONTH)

您可以以相同的方式找到日期的任何组成部分的最小值和最大值。


1
投票

您尝试过以下方法吗?

将日历对象设置为所需的月份后,
calendar.getActualMaximum(日历.DATE);

对于最小值,我想它总是第一个。

希望有帮助。


1
投票

最小日期始终为 1 最大日期可以计算为

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();

        int year = 2010;
        int month = Calendar.FEBRUARY;
        int date = 1;
        int maxDay =0;  

        calendar.set(year, month, date);
        System.out.println("First Day: " + formatter.format(calendar.getTime()));

        //Getting Maximum day for Given Month
        maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        calendar.set(year, month, maxDay);  
        System.out.println("Last Day: " + formatter.format(calendar.getTime()));

希望这会有所帮助


0
投票

我得到了如下解决方案,

public void ddl_month_valueChange(ValueChangeEvent event) {
 int v_month = Integer.parseInt(event.getNewValue().toString()) - 1; 
 java.util.Calendar c1 = java.util.Calendar.getInstance(); 
 c1.set(2011, v_month, 1); 
 Date d_set_att_from = c1.getTime(); 
 cal_att_from_date.setValue(d_set_att_from);
 c1.add(java.util.Calendar.MONTH, 1);
 c1.add(java.util.Calendar.DATE, -1); 
 Date d_set_att_to = c1.getTime();
 cal_att_to_date.setValue(d_set_att_to);  }

0
投票

对于正在寻找使用 Java 8 API 的解决方案的人们:

给定月份的最小日期:

YearMonth.from(clock.instant().atZone(ZoneId.of("UTC")))
            .atDay(1)
            .atStartOfDay()
            .toInstant(ZoneOffset.UTC)

给定月份的最大日期:

YearMonth.from(clock.instant().atZone(ZoneId.of("UTC")))
            .atEndOfMonth()
            .atTime(LocalTime.MAX)
            .toInstant(ZoneOffset.UTC)
© www.soinside.com 2019 - 2024. All rights reserved.