How to get the last date of a particular month with JodaTime?

后端 未结 4 1184
礼貌的吻别
礼貌的吻别 2020-12-02 11:36

I need to get the first date (as org.joda.time.LocalDate) of a month and the last one. Getting the first is trivial, but getting the last seems to need some log

相关标签:
4条回答
  • 2020-12-02 12:16

    How about:

    LocalDate endOfMonth = date.dayOfMonth().withMaximumValue();
    

    dayOfMonth() returns a LocalDate.Property which represents the "day of month" field in a way which knows the originating LocalDate.

    As it happens, the withMaximumValue() method is even documented to recommend it for this particular task:

    This operation is useful for obtaining a LocalDate on the last day of the month, as month lengths vary.

    LocalDate lastDayOfMonth = dt.dayOfMonth().withMaximumValue();
    
    0 讨论(0)
  • 2020-12-02 12:19

    An old question, but a top google result when I was looking for this.

    If someone needs the actual last day as an int instead using JodaTime you can do this:

    public static final int JANUARY = 1;
    
    public static final int DECEMBER = 12;
    
    public static final int FIRST_OF_THE_MONTH = 1;
    
    public final int getLastDayOfMonth(final int month, final int year) {
        int lastDay = 0;
    
        if ((month >= JANUARY) && (month <= DECEMBER)) {
            LocalDate aDate = new LocalDate(year, month, FIRST_OF_THE_MONTH);
    
            lastDay = aDate.dayOfMonth().getMaximumValue();
        }
    
        return lastDay;
    }
    
    0 讨论(0)
  • 2020-12-02 12:20

    Using JodaTime,we can do this :

    
        public static final Integer CURRENT_YEAR = DateTime.now().getYear();
    
        public static final Integer CURRENT_MONTH = DateTime.now().getMonthOfYear();
    
        public static final Integer LAST_DAY_OF_CURRENT_MONTH = DateTime.now()
                .dayOfMonth().getMaximumValue();
    
        public static final Integer LAST_HOUR_OF_CURRENT_DAY = DateTime.now()
                .hourOfDay().getMaximumValue();
    
        public static final Integer LAST_MINUTE_OF_CURRENT_HOUR = DateTime.now().minuteOfHour().getMaximumValue();
    
        public static final Integer LAST_SECOND_OF_CURRENT_MINUTE = DateTime.now().secondOfMinute().getMaximumValue();
    
    
        public static DateTime getLastDateOfMonth() {
            return new DateTime(CURRENT_YEAR, CURRENT_MONTH,
                    LAST_DAY_OF_CURRENT_MONTH, LAST_HOUR_OF_CURRENT_DAY,
                    LAST_MINUTE_OF_CURRENT_HOUR, LAST_SECOND_OF_CURRENT_MINUTE);
        }

    As describe here in my small gist on github : A JodaTime and java.util.Date Util Class with a lot of usefull functions.

    0 讨论(0)
  • 2020-12-02 12:34

    Another simple method is this:

    //Set the Date in First of the next Month:
    answer = new DateTime(year,month+1,1,0,0,0);
    //Now take away one day and now you have the last day in the month correctly
    answer = answer.minusDays(1);
    
    0 讨论(0)
提交回复
热议问题