मुझे एक जीयूआई में प्रदर्शित करने के लिए जावा तिथि से केवल महीने और साल की जानकारी निकालने की आवश्यकता है। इस दिनांक का उपयोग उपयोगकर्ता लोकेल का उपयोग करके किया जाना चाहिए। मैं स्थानीय तिथियां प्रारूपित के लिए 2 तरीके जानते हैं:जावा में लोकेल-विशिष्ट स्वरूपण के लिए दिनांक फ़ील्ड निकालने के लिए कैसे करें?
DateFormat.getInstance(DateFormat.LONG, locale).format(date)
- का उपयोग करना
new SimpleDateFormat("yyyy M", locale).format(date)
स्थान SIMPLIFIED_CHINESE
और तारीख 2013-02-18
के लिए उपयोग करना, इस देता है:
- 2013 年 2 月 18日
हमें दिन के बिना LONG
प्रारूप (2013 年 2 月) का उपयोग करने की आवश्यकता है। [संस्करण 2 स्पष्ट रूप से स्वीकार्य नहीं है क्योंकि वर्ष-महीने के आदेश लोकेल से प्रभावित नहीं होते हैं]। समस्या हो सकती है: लंबे प्रारूप से दिन भाग (18 日) को कैसे हटाया जाए? मैंने विधि format(Date date, StringBuffer toAppendTo, FieldPosition pos)
विधि का उपयोग करने का प्रयास किया, लेकिन यह केवल अतिरिक्त भाग नहीं, संख्या भाग निकालने की अनुमति देता है।
DateFormat.getInstance(DateFormat.LONG, Locale.SIMPLIFIED_CHINESE)
का पैटर्न yyyy'年'M'月'd'日'
है। दिन के हिस्से को निकालने से yyyy'年'M'月'
मिलेगा। मुझे ऐसा लगता है कि अतिरिक्त पात्रों (年
, 月
और 日
) के बाद जावा के डेटफॉर्मैट मानक का उपयोग करना संभव नहीं है) इसी क्षेत्र में मैप किए गए प्रतीत नहीं होते हैं, लेकिन फ़ॉर्मेटर के लिए अन्य अर्थात् बिना वर्ण हैं।
मुझे DateFormatSymbols
और LocaleServiceProvider
पर एक नज़र थी, लेकिन लगता है कि इससे मदद नहीं मिलती है। मेरे लिए, एक्सटेंशन का बिंदु getInstance(int style)
विधि में एक और दिनांक शैली जोड़ देगा। लेकिन यह सभी लोकेल के लिए इसे कार्यान्वित किए बिना संभव नहीं लगता है ...
क्या यह विश्लेषण सही है? इस स्वरूपण को एक साफ तरीके से कैसे प्राप्त करें?
+1: मैं इसे करने का कोई तरीका नहीं देख सकता। शायद इसके बजाय जोडाटाइम लाइब्रेरी आज़माएं। –
मैंने बिना किसी सफलता के निम्नलिखित प्रयास किए: 'YearMonth.fromCalendarFields (cal) .toString (DateTimeFormat.longDate() .Locale (लोकेल) के साथ)'। – Jidehem