JodaTime के साथ किसी विशेष महीने की अंतिम तिथि कैसे प्राप्त करें?


110

मुझे org.joda.time.LocalDateएक महीने की पहली तारीख (के रूप में ) और आखिरी की आवश्यकता है। पहले प्राप्त करना तुच्छ है, लेकिन अंतिम प्राप्त करना कुछ तर्क की आवश्यकता है क्योंकि महीनों की लंबाई अलग है और फरवरी की लंबाई भी वर्षों से भिन्न होती है। क्या इसके लिए एक तंत्र पहले से ही JodaTime में बनाया गया है या क्या मुझे इसे स्वयं लागू करना चाहिए?


2
सिर्फ एक हेड-अप, यह भी DateTimeप्रकारों के साथ काम करता है :)
vikingsteve

जवाबों:


222

कैसा रहेगा:

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

dayOfMonth()रिटर्न LocalDate.Propertyजो एक तरह से "महीने के दिन" क्षेत्र का प्रतिनिधित्व करता है जो मूल को जानता है LocalDate

जैसा कि होता है, इस विशेष कार्य के लिए सिफारिश करने के लिए withMaximumValue()विधि भी प्रलेखित है:

यह ऑपरेशन महीने के अंतिम दिन लोकलडेट प्राप्त करने के लिए उपयोगी है, क्योंकि महीने की लंबाई बदलती रहती है।

LocalDate lastDayOfMonth = dt.dayOfMonth().withMaximumValue();

1
@Jon Skeet जावा 8 की नई तिथि और समय एपीआई का उपयोग करके इसे कैसे प्राप्त करें?
वारेन एम। नोकोस

5
@ WarrenM.Nocos: मैं का उपयोग करेंdt.with(TemporalAdjusters.lastDayOfMonth())
जॉन स्कीट

4

एक और सरल विधि यह है:

//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);

4
तब क्या होता है यदि आपका महीना = १२ है?
जौन

JodaTime एपीआई एक परिष्कृत, पूरी तरह से भरी हुई और सुविधाजनक कृति है। इसे पूरा करने के कई अन्य, अधिक सही तरीके हैं।
अहिजा

यदि माह 12 है, तो आप जानते हैं कि अंतिम दिन 31 सही है? बस कुछ इस तरह से डालें: यदि (माह <12) {उत्तर = नया दिनांक समय (वर्ष, माह + 1,1,0,0,0); answer = answer.minusDays (1); } और उत्तर = 31;
अब्राहम मालडोनाडो बैरियोस

1

एक पुराना सवाल है, लेकिन एक शीर्ष गूगल परिणाम जब मैं इस के लिए देख रहा था।

अगर किसी को intJodaTime का उपयोग करने के बजाय वास्तविक अंतिम दिन की आवश्यकता हो, तो आप ऐसा कर सकते हैं:

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;
}

1
मैंने थोड़ा क्लीनर उत्तर पसंद किया होगा, जैसे: सार्वजनिक स्थैतिक int getLastDayOfMonth (int वर्ष, int month) {LocalDate दिनांक = नया LocalDate (वर्ष, महीना, 1 रिटर्न date.dayOfMonth ()। GetMaximumValue ();}) लेकिन आपका उत्तर। सुपर सहायक है, भले ही थोड़ा बरबाद हो, तो +1;)
कूदता है 4

-1

JodaTime का उपयोग करते हुए, हम यह कर सकते हैं:

    सार्वजनिक स्थिर अंतिम पूर्णांक CURRENT_YEAR = DateTime.now ()। getYear ();

    सार्वजनिक स्थिर अंतिम पूर्णांक CURRENT_MONTH = DateTime.now ()। getMonthOfYear ();

    सार्वजनिक स्थिर अंतिम पूर्णांक LAST_DAY_OF_CURRENT_MONTH = DateTime.now ()
            । .DayOfMonth () getMaximumValue ();

    सार्वजनिक स्थिर अंतिम पूर्णांक LAST_HOUR_OF_CURRENT_DAY = DateTime.now ()
            । .HourOfDay () getMaximumValue ();

    सार्वजनिक स्थिर अंतिम पूर्णांक LAST_MINUTE_OF_CURRENT_HOUR = DateTime.now ()। मिनटऑफहॉर ()। getMaximumValue ();

    सार्वजनिक स्थिर अंतिम इंटेगर LAST_SECOND_OF_CURRENT_MINUTE = DateTime.now ()। दूसराOMMute ()। getMaximumValue ();


    सार्वजनिक स्थैतिक DateTime getLastDateOfMonth () {
        नया दिनांक समय (CURRENT_YEAR, CURRENT_MONTH,
                LAST_DAY_OF_CURRENT_MONTH, LAST_HOUR_OF_CURRENT_DONAY,
                LAST_MINUTE_OF_CURRENT_HOUR, LAST_SECOND_OF_CURRENT_MINUTE);
    }

जैसा कि यहाँ मेरे छोटे से जिठुब में वर्णन है: A JodaTime और java.util.Date Util Class जिसमें बहुत सारे उपयोगी कार्य हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.