जब हम जानते हैं कि महीने का नाम पाने के लिए एक ऑन्लाइनर है int monthNumber = calendar.get(Calendar.MONTH)
? या सबसे आसान तरीका क्या है?
जब हम जानते हैं कि महीने का नाम पाने के लिए एक ऑन्लाइनर है int monthNumber = calendar.get(Calendar.MONTH)
? या सबसे आसान तरीका क्या है?
जवाबों:
आपको यह रास्ता भी मिलेगा।
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;
}
आप इसे SimpleDateFormat का उपयोग करके प्राप्त कर सकते हैं , जो कि दिनांक और समय को प्रारूपित करने के लिए है।
Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
यह जितना सरल है
mCalendar = Calendar.getInstance();
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
октября
बजाय आपको प्राप्त होगा Октябрь
, जिसकी आप उम्मीद करते हैं।
यह एक वर्ग परियोजना के लिए मेरे द्वारा लाया गया समाधान है:
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
कॉल से आता है ।
new SimpleDateFormat("MMMM").format(cal.getTime());
यदि आपके पास बहु-भाषा इंटरफ़ेस है, तो आप 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
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );
कुछ भाषाओं (जैसे रूसी) के लिए यह स्टैंड-अलोन महीने के नाम पाने का एकमात्र सही तरीका है।
यह वह है जो आपको मिलता है, यदि आप जनवरी getDisplayName
से Calendar
या इसके DateFormatSymbols
लिए उपयोग करते हैं :
января (जो पूर्ण तिथि स्ट्रिंग के लिए सही है: " 10 января, 2014 ")
लेकिन एक अकेले महीने के नाम के मामले में आप उम्मीद करेंगे:
январь
कैसे उपयोग करने के बारे Joda समय । साथ काम करने के लिए यह एक बेहतर तारीख-समय एपीआई है (और 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");
उपरोक्त दृष्टिकोण महीने के नाम की भाषा के लिए आपके JVM के वर्तमान डिफ़ॉल्ट लोकेल का उपयोग करता है। आप इसके बजाय एक लोकेल ऑब्जेक्ट निर्दिष्ट करना चाहते हैं।
String month = date.toString( "MMM", Locale.CANADA_FRENCH );
SimpleDateFormat
औरDate
Month::getDisplayName
जावा 8 के बाद से, Month
एनम का उपयोग करें । getDisplayName
विधि स्वतः महीने के नाम localizes।
उत्तीर्ण करना:
TextStyle
निर्धारित करने के लिए कि कब तक या कैसे संक्षिप्त है।Locale
मानव अनुवाद में प्रयुक्त भाषा, और सांस्कृतिक मानदंडों संक्षिप्त नाम, विराम चिह्न, आदि के लिए इस्तेमाल किया निर्दिष्ट करने के लिएउदाहरण:
public static String getMonthStandaloneName(Month month) {
return month.getDisplayName(
TextStyle.FULL_STANDALONE,
Locale.getDefault()
);
}
यह एक पुराना प्रश्न हो सकता है, लेकिन महीने के नाम को प्राप्त करने के लिए एक लाइनर के रूप में जब हम सूचकांकों को जानते हैं, तो मैंने उपयोग किया
String month = new DateFormatSymbols().getMonths()[monthNumber - 1];
या छोटे नामों के लिए
String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];
कृपया ध्यान रखें कि आपकी monthNumber
गिनती 1 से शुरू होती है जबकि ऊपर दी गई कोई भी विधि किसी सरणी को लौटाती है इसलिए आपको 0 से गिनती शुरू करने की आवश्यकता है।
इस कोड में भाषा का समर्थन है। मैंने उन्हें एंड्रॉइड ऐप में इस्तेमाल किया था।
String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,...
String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
मुझे यह बहुत आसान लगा ( 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));
के मामले में असफल नहीं होगा ?
एक रास्ता:
हमारे पास Month
जावा ( java.time.Month
) में एपीआई है । हम उपयोग करके प्राप्त कर सकते हैंMonth.of(month);
यहां, Month
संख्याओं के रूप में अनुक्रमित हैं , इसलिए या तो आप Month.JANUARY
उपरोक्त एपीआई में 1, 2, 3, 4 जैसे सूचकांक प्रदान कर सकते हैं या प्रदान कर सकते हैं ।
दूसरा तरीका:
ZonedDateTime.now().getMonth();
इसमें उपलब्ध है java.time.ZonedDateTime
।
मैंने इस विषय में प्रतिक्रियाओं के आधार पर एक कोटलिन एक्सटेंशन बनाया और DateFormatSymbols उत्तरों का उपयोग करके आपको एक स्थानीय प्रतिक्रिया मिली।
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]
}
इसने मेरे लिए काम किया
import java.text.SimpleDateFormat;
import java.util.Calendar;
Calendar cal = Calendar.getInstance();
String currentdate=new SimpleDateFormat("dd-MMM").format(cal.getTime());
DateFormat date = new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));
यह महीने का अंग्रेजी नाम देता है। 04 APRIL और इतने पर रिटर्न।
String englishMonth (int month){
return Month.of(month);
}
Month
लागू toString
करना होगा।
SimpleDateFormat जावा डॉक्टर से:
* <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>