জোদাটাইম দিয়ে কোনও নির্দিষ্ট মাসের শেষ তারিখটি কীভাবে পাবেন?


110

আমার org.joda.time.LocalDateএক মাসের প্রথম তারিখ ( শেষ) হওয়া দরকার। প্রথমটি পাওয়া তুচ্ছ, তবে শেষের দিকে কিছুটা যুক্তি প্রয়োজন বলে মনে হয় কারণ কয়েক মাসের দৈর্ঘ্য এবং ফেব্রুয়ারির দৈর্ঘ্য এমনকি বছরের পর বছর পরিবর্তিত হয়। ইতিমধ্যে জোডটাইমে অন্তর্নির্মিত হওয়ার কোনও ব্যবস্থা আছে কি আমি নিজে এটি প্রয়োগ করতে পারি?


2
কেবল একটি DateTime
শীর্ষস্থান

উত্তর:


222

কেমন:

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

dayOfMonth()একটি ফেরৎ LocalDate.Propertyযা একটি উপায় যার উদ্ভব জানে মধ্যে "মাসের দিন" ক্ষেত্র প্রতিনিধিত্ব করে LocalDate

এটি যেমন ঘটে থাকে withMaximumValue()তেমনি এই নির্দিষ্ট কাজের জন্য এটির প্রস্তাব দেওয়ার জন্যও পদ্ধতিটি নথিভুক্ত করা হয়:

মাসের দৈর্ঘ্য পৃথক হওয়ায় এই অপারেশনটি মাসের শেষ দিনে একটি স্থানীয় তারিখ প্রাপ্ত করার জন্য কার্যকর।

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

1
@ জোন স্কিটি জাভা 8 এর নতুন তারিখ এবং সময় এপিআই ব্যবহার করে এটি কীভাবে পাবেন?
ওয়ারেন এম নোকস

5
@ ওয়ারেনএম.নোকস: আমি ব্যবহার করব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
যদি আপনার মাস = 12 হয় তবে কি হবে?
জন

জোডটাইম এপিআই হ'ল একটি পরিশীলিত, সম্পূর্ণ বোঝা এবং সুবিধাজনক কাজের অংশ। এটি সম্পাদন করার আরও অনেকগুলি সঠিক পদ্ধতি।
আয়েজজা

যদি মাসটি 12 হয় তবে আপনি জানেন শেষ দিনটি 31 টি ঠিক আছে? এই জাতীয় কিছু রাখুন: যদি (মাস <12) {উত্তর = নতুন ডেটটাইম (বছর, মাস + 1,1,0,0,0); উত্তর = উত্তর.মিনিসডেস (1); answer অন্য উত্তর = 31;
আব্রাহাম মালদোনাদো ব্যারিওস

1

একটি পুরানো প্রশ্ন, তবে আমি যখন এটির সন্ধান করছিলাম তখন শীর্ষস্থানীয় গুগল ফলাফল।

intজোদাটাইম ব্যবহারের পরিবর্তে কারও যদি সত্যিকারের শেষ দিনটির প্রয়োজন হয় তবে আপনি এটি করতে পারেন:

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 মাস) {লোকাল ডেট ডেট = নতুন লোকাল ডেট (বছর, মাস, 1 রিটার্ন ডেট.ডাইঅফমনেথ ()। GetMaximumValue (); your তবে আপনার উত্তর কিছুটা
বিশৃঙ্খলা ছড়িয়ে

-1

জোডটাইম ব্যবহার করে, আমরা এটি করতে পারি:

    সর্বজনীন স্ট্যাটিক চূড়ান্ত পূর্ণসংখ্যা CURRENT_YEAR = ডেটটাইম.নো ()। getYear ();

    সর্বজনীন স্ট্যাটিক চূড়ান্ত পূর্ণসংখ্যা CURRENT_MONTH = তারিখটাইম.নো ()। getMonthOfYear ();

    সর্বজনীন স্থিতিশীল চূড়ান্ত পূর্ণসংখ্যা LAST_DAY_OF_CURRENT_MONTH = তারিখের সময়.নুনুন ()
            । .DayOfMonth () getMaximumValue ();

    সর্বজনীন স্থিতিশীল চূড়ান্ত পূর্ণসংখ্যার LAST_HOUR_OF_CURRENT_DAY = তারিখের সময়.নুনুন ()
            । .HourOfDay () getMaximumValue ();

    সর্বজনীন স্ট্যাটিক চূড়ান্ত পূর্ণসংখ্যা LAST_MINUTE_OF_CURRENT_HOUR = তারিখের সময়.নো () .মিনিট থেকে কয়েক ঘন্টা ()। getMaximumValue ();

    সর্বজনীন স্ট্যাটিক চূড়ান্ত পূর্ণসংখ্যার LAST_SECOND_OF_CURRENT_MINUTE = তারিখের সময়.নো ()। সেকেন্ডআফমিনিউট ()। getMaximumValue ();


    সর্বজনীন স্ট্যাটিক ডেটটাইম getLastDateOfMonth () {
        নতুন ডেটটাইম ফেরান (CURRENT_YEAR, CURRENT_MONTH,
                LAST_DAY_OF_CURRENT_MONTH, LAST_HOUR_OF_CURRENT_DAY,
                LAST_MINUTE_OF_CURRENT_HOUR, LAST_SECOND_OF_CURRENT_MINUTE);
    }

গিথুবটিতে আমার ছোট টুকরোটিতে এখানে বর্ণনা করুন: অনেক জোড় কার্যকারিতা সহ একটি জোডটাইম এবং java.util.Date ইউটিল ক্লাস।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.