ক্যালেন্ডার থেকে কিভাবে মাসের নাম পাবেন?


97

আমরা যখন জানব তখন কি মাসের নাম পাওয়ার জন্য কোনও অন্নেলাইনার রয়েছে?

int monthNumber = calendar.get(Calendar.MONTH)

বা সবচেয়ে সহজ উপায় কি?


4
@anyone_reaching_this_issue: এই প্রশ্নের ( stackoverflow.com/questions/6192781/month-name-as-a-string ) getDisplayName () এবং অন্যান্য intesreting ঠাট উল্লেখ
Poutrathor

উত্তর:


101

আপনি এইভাবে পাবেন।

  String getMonthForInt(int num) {
        String month = "wrong";
        DateFormatSymbols dfs = new DateFormatSymbols();
        String[] months = dfs.getMonths();
        if (num >= 0 && num <= 11 ) {
            month = months[num];
        }
        return month;
    }

6
তারিখফর্ম্যাটসিম্বলসের বাস্তবায়ন জেডিকে ৮-এ পরিবর্তিত হয়েছে, সুতরাং getMonths পদ্ধতিটি এখন সমস্ত লোকালের জন্য সঠিক মানগুলি ফিরিয়ে দেয় না: oracle.com/technetwork/java/javase/…
আহমান

4
আপনি JDK8 এর জন্য একটি workaround / কার্যনির্বাহী সমাধান দিতে পারেন?
ডোমিনিক

সংখ্যা হিসাবে আপনি কখন এক মাস পাবেন?
মিকি পার্লস্টাইন

আপনার প্রশ্নের জবাব দেওয়ার জন্য মিকি, আপনি এখানে কীভাবে মাস হিসাবে পাবেন এবং এটি ব্যবহার করবেন - পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) - ইন মাস; গ্রেগরিয়ানক্যালেন্ডার তারিখ = নতুন গ্রেগরিয়ানক্যালেন্ডার (); মাস = তারিখ.জেট (ক্যালেন্ডার.মোনথ); System.out.println ("বর্তমান মাস" + (মাস + 1) + "এবং মাসের নাম" + getMonthForInt (মাস)) হয়; } স্ট্যাটিক স্ট্রিং getMonthForInt (int num) ring স্ট্রিং মাস = "ভুল"; ডেটফর্ম্যাটসিম্বলস ডিএফএস = নতুন ডেটফর্ম্যাটসাইম্বলস (); স্ট্রিং [] মাস = dfs.getMonths (); যদি (সংখ্যা> = 0 && সংখ্যা <= 11) = মাস = মাস [সংখ্যা]; } ফিরতি মাস; }
অজয় কুমার

194

আপনি সিম্পলডেটফর্ম্যাট ব্যবহার করে এটি অর্জন করতে পারবেন যা তারিখ এবং সময়গুলি বিন্যাস করার উদ্দেশ্যে।

Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));

এটি কাজ করবে তবে আমি স্ট্রিংটি পুনরায় পেতে চাই। আমি যখন এর সূচকটি জানি know আমি মনে করি আমি অন্যান্য পদ্ধতিগুলি ব্যবহার করব, ধন্যবাদ।
ogzd

48
এটি আমাকে বর্তমান মাসের নাম পেতে সহায়তা করেছে। যদিও আমি ("এমএমএমএম") একটি সংক্ষিপ্ত নামের পরিবর্তে পুরো মাসের নাম পেতে ব্যবহার করেছি।
স্পিডিয়েনমডস

79

এই হিসাবে সহজ

mCalendar = Calendar.getInstance();    
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());

4
ক্যালেন্ডার বিমূর্তি ব্যবহার আমার মতে সর্বাধিক মার্জিত সমাধান। +1
সেবাস্তিয়ান

4
ভুল! সমস্যাগুলি ক্ষেত্রে ক্ষেত্রে ভাষায় হবে be উদাহরণস্বরূপ, স্লাভিক স্থানীয়গুলিতে এটি জেনিটিক ক্ষেত্রে মাসে ফিরে আসবে, উদাহরণস্বরূপ, অক্টোবরের জন্য রু-আরইউ লোকালে আপনি তার октябряপরিবর্তে পাবেন Октябрь, যা আপনি সম্ভবত আশা করেন।
নিক সিকেরিয়র

41

ক্লাস প্রকল্পের জন্য এটিই আমি সমাধান নিয়ে এসেছি:

public static String theMonth(int month){
    String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    return monthNames[month];
}

আপনি যে নম্বরটি পাস করেছেন তা Calendar.MONTHকল থেকে আসে ।


4
এটি আমার জন্য দরকারীnew SimpleDateFormat("MMMM").format(cal.getTime());
প্রতীক বুটানি

এটি একটি দুর্বল সমাধান, জান, ফেব্রুয়ারি ইত্যাদি সম্পর্কে জানুয়ারী ফেব্রুয়ারী ছাড়াও কীভাবে এই সমস্ত পরিস্থিতি আবৃত হবে না
আবির জারুর

4
ঠিক আছে, আপনার মাসে 1 যোগ করা উচিত। অ্যারেগুলি 0 থেকে শুরু হয়
রোকোদেভ

4
এটি ইংরেজিভাষী ব্যবহারকারীদের জন্য কাজ করে। অন্যদের খবর কি?
অ্যাডওয়াইট এস

4
@ মিকি পেরলস্টাইন নং এটি জাভা 'পুনর্নবীকরণ' নয় (যেমন আপনি এটি রেখেছেন) জাভা। এবং এটি 'খারাপ'ও নয়। এটি কেবল এটি করার একটি উপায়। এছাড়াও এটি ক্যালেন্ডার ক্লাসটি ব্যবহার না করার উপর ভিত্তি করে তৈরি করা হয়েছে (বা কমপক্ষে আপনাকে এটি ব্যবহার করতে হবে না - যদিও আপনি যদি চলতি মাস সম্ভবত চান তবে) যা কিছু ক্ষেত্রে কাম্য হতে পারে। অবশ্যই এটি কেবল ইংরেজির জন্য তবে এটি বিন্দু ছাড়াও।
প্রাইফটান

33

আপনার যদি একাধিক-ভাষা ইন্টারফেস থাকে, আপনি ভাষার প্রদর্শন নিয়ন্ত্রণের সাথে মাসের নাম প্রদর্শন করতে getDisplayName ব্যবহার করতে পারেন।

এখানে "সিরিয়া" এর মতো নির্দিষ্ট দেশে মাসের নাম ইংরাজী, ফ্রেঞ্চ, আরবিক এবং আরবিক প্রদর্শনের উদাহরণ রয়েছে:

    Calendar c = Calendar.getInstance();
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.FRANCE ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar") ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar", "SY") ) );
    System.out.println(c.getTime().toString());

ফলাফল হলো:

  January
  janvier
  يناير
  كانون الثاني
  Sat Jan 17 19:31:30 EET 2015

এটি কোন জাভা সংস্করণ?
মুহাম্মদ জেলবানা

16
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );

কিছু ভাষার জন্য (যেমন রাশিয়ান) একা একা একা একা একা সঠিক মাসের নাম পাওয়ার সঠিক উপায়।

আপনি যদি জানুয়ারী getDisplayNameথেকে Calendarবা এটি ব্যবহার করেন তবে এটিই আপনি পাবেন DateFormatSymbols:

января (যা সম্পূর্ণ তারিখের স্ট্রিংয়ের জন্য সঠিক: " 10 января, 2014 ")

তবে একা একা মাসের নামটি আপনি আশা করতে পারেন:

январь


আর ইউ লোকেলের জন্য সঠিক উত্তর। খুব অদ্ভুত, যে অ্যান্ড্রয়েড এসডিকে 'এলএলএলএল' স্পেস থাকে না।
আনফেট

12

জোদা-সময়

জোদা-সময় ব্যবহার সম্পর্কে কীভাবে । এটির সাথে কাজ করার জন্য এটি একটি আরও ভাল তারিখ-সময়ের API (এবং Januaryএখানে জানুয়ারীর অর্থ এটি ক্যালেন্ডারের মতো নয়, যা 0-basedকয়েক মাস ধরে সূচক ব্যবহার করে)।

AbstractDateTime#toString( pattern )নির্দিষ্ট ফরম্যাটে তারিখটি ফর্ম্যাট করতে আপনি পদ্ধতিটি ব্যবহার করতে পারেন :

DateTime date = DateTime.now();
String month = date.toString("MMM");

নম্বর থেকে মাসের নাম

আপনি যদি কোনও নির্দিষ্ট মাসের জন্য মাসের নাম চান তবে আপনি এটি এটি করতে পারেন:

int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");

স্থানীয়করণ

উপরের পদ্ধতির মাসের নামের ভাষার জন্য আপনার জেভিএমের বর্তমান ডিফল্ট লোকাল ব্যবহার করে। পরিবর্তে আপনি একটি স্থানীয় আইটেম নির্দিষ্ট করতে চান।

String month = date.toString( "MMM", Locale.CANADA_FRENCH );

4
ধন্যবাদ তবে আমি আমার পুরানো SimpleDateFormatএবংDate
ogzd

@ogzd তোমার ইচছা. তবে আপনার অবশ্যই এটি চেষ্টা করে দেখা উচিত, এবং আমি বাজি ধরছি যে আপনি এটি পছন্দ করবেন।
রোহিত জৈন

@ogzd আমি মাসের নাম্বার থেকে মাসের নাম পাওয়ার উপায় পোস্ট করেছি। বিটিডাব্লু, আপনি কেন এটি করতে চান?
রোহিত জৈন

10

Month::getDisplayName

জাভা 8 থেকে, Monthএনাম ব্যবহার করুন । getDisplayNameপদ্ধতি স্বয়ংক্রিয়ভাবে মাসের নাম localizes।

পাস:

  • TextStyleকত সময় বা সংক্ষিপ্ত রূপ নির্ধারণের জন্য একটি ।
  • একজন Localeমানুষের অনুবাদ ব্যবহৃত ভাষা এবং সাংস্কৃতিক নিয়ম সংক্ষেপ, যতিচিহ্ন, ইত্যাদি জন্য ব্যবহৃত নির্দিষ্ট করতে

উদাহরণ:

public static String getMonthStandaloneName(Month month) {
    return month.getDisplayName(
        TextStyle.FULL_STANDALONE, 
        Locale.getDefault()
    );
}

9

এটি একটি পুরানো প্রশ্ন হতে পারে, তবে আমরা যখন সূচকগুলি জানি তখন মাসের নাম জানতে একটি লাইনার হিসাবে

String month = new DateFormatSymbols().getMonths()[monthNumber - 1];

বা সংক্ষিপ্ত নামের জন্য

String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];

দয়া করে সচেতন হন যে আপনার monthNumber1 থেকে গণনা শুরু হয় যখন উপরের যে কোনও পদ্ধতিতে অ্যারে দেয় তাই আপনাকে 0 থেকে গণনা শুরু করতে হবে।


3

এই কোডটির ভাষা সমর্থন রয়েছে। আমি এগুলি অ্যান্ড্রয়েড অ্যাপে ব্যবহার করেছি।

String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,... 

String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...

4
এই পুরোপুরি কাজ করে, মন্তব্য নেই শুধু একটি অতি ক্ষুদ্র অংশ সম্পূর্ণ ভুল যদিও
Иво Недев

3

আমি এটিকে অনেক সহজ পেয়েছি ( https://docs.oracle.com/javase/tutorial/datetime/iso/enum.html )

private void getCalendarMonth(Date date) {      
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    Month month = Month.of(calendar.get(Calendar.MONTH));       
    Locale locale = Locale.getDefault();
    System.out.println(month.getDisplayName(TextStyle.FULL, locale));
    System.out.println(month.getDisplayName(TextStyle.NARROW, locale));
    System.out.println(month.getDisplayName(TextStyle.SHORT, locale));
}

Monthএর সূচীটি জানুয়ারী = 1 দিয়ে শুরু হয় না , যেখানে ক্যালেন্ডারটি জানুয়ারী = 0 দিয়ে শুরু হয়? Month.of(calendar.get(Calendar.MONTH));জানুয়ারির ক্ষেত্রে ব্যর্থ হবে না ?
এমসিও

2

আপনি এটির মতো একটি লাইন পেতে পারেন: String monthName = new DataFormatSymbols.getMonths()[cal.get(Calendar.MONTH)]


2

এটি আমার পক্ষে কাজ করে:

String getMonthName(int monthNumber) {
    String[] months = new DateFormatSymbols().getMonths();
    int n = monthNumber-1;
    return (n >= 0 && n <= 11) ? months[n] : "wrong number";
}

"September"এক লাইনের সাথে ফিরতে :

String month = getMonthName(9);

2

একমুখী:

আমরা আশা করি আপনি Monthজাভা এপিআই ( java.time.Month)। আমরা ব্যবহার করে পেতে পারিMonth.of(month);

এখানে, Monthসংখ্যাগুলি হিসাবে তালিকাবদ্ধ করা হয় যাতে হয় আপনি Month.JANUARYউপরের API তে যেমন 1, 2, 3, 4 সরবরাহ করতে পারেন বা সরবরাহ করতে পারেন ।

দ্বিতীয় উপায়:

ZonedDateTime.now().getMonth();

এটি পাওয়া যায় java.time.ZonedDateTime


1

আমি এই বিষয়ে প্রতিক্রিয়াগুলির উপর ভিত্তি করে এবং একটি স্থানীয় প্রতিক্রিয়া পাবার জন্য ডেটফর্ম্যাট সিম্বলস উত্তরগুলি ব্যবহার করে একটি কোটলিন এক্সটেনশন তৈরি করেছি।

fun Date.toCalendar(): Calendar {
    val calendar = Calendar.getInstance()
    calendar.time = this
    return calendar
}


fun Date.getMonthName(): String {
    val month = toCalendar()[Calendar.MONTH]
    val dfs = DateFormatSymbols()
    val months = dfs.months
    return months[month]
}

1

এটি আমার পক্ষে কাজ করেছে

        import java.text.SimpleDateFormat;
        import java.util.Calendar;


        Calendar cal = Calendar.getInstance();
        String currentdate=new SimpleDateFormat("dd-MMM").format(cal.getTime());

0
DateFormat date =  new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));

4
যদিও আপনার উত্তরটি সঠিক হতে পারে, এটি খারাপ মানের। এই উত্তরটি কেন সঠিক তা দয়া করে বিশদভাবে জানান।
সাব্লাইমসিয়েম

4
@ সুবলিমেসিম আমি ফর্ম্যাট পরিবর্তন করার চেষ্টা করছি এবং এটি করার সহজ উপায়: এমএম- এটি 01, 02, 03 এর মত পূর্ণসংখ্যায় মাসের নাম ফিরিয়ে দেবে M এমএমএমএম-এটি পুরো মাসের নামটি জানুয়ারির মতো স্ট্রিং ফর্ম্যাটে ফিরে আসবে।
অমিত মিশ্র

ফর্ম্যাট করার তারিখগুলির জন্য এটিই কেবল সঠিক উত্তর। একটি তারিখ বা ক্যালেন্ডার অবজেক্ট ব্যবহার করুন এবং একটি ফর্ম্যাটারের সাথে এটি ফর্ম্যাট করুন। প্রশ্নটি নিজেই খারাপ
মিকি পার্লস্টাইন

0

এটি মাসের ইংরেজি নাম ফেরত দেয়। 04 এপ্রিল এবং অন্যান্য প্রদান করে।

String englishMonth (int month){
        return Month.of(month);
    }

সহজ এবং সরাসরি পরামর্শ, ধন্যবাদ। আপনার কোডটি সংকলন করে না। হয় আপনাকে রিটার্নের ধরণ ঘোষণা করতে হবে Monthবা toStringফলাফলটি ফেরত দেওয়ার আগে প্রয়োগ করতে হবে।
ওলে ভিভি

-3

সিম্পলডেটফরম্যাট জাভা ডক থেকে:

*         <td><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
 *         <td><code>02001.July.04 AD 12:08 PM</code>
 *         <td><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
 *         <td><code>Wed, 4 Jul 2001 12:08:56 -0700</code>

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