क्या DateFormat.get*Instance()
SimpleDateFormat
पर लौटाई गई ऑब्जेक्ट कास्टिंग किए बिना किसी दिए गए लोकेल के लिए डिफ़ॉल्ट पैटर्न पुनर्प्राप्त करना संभव है?क्या किसी दिए गए लोकेल के लिए डिफ़ॉल्ट पैटर्न पुनर्प्राप्त करने का कोई और तरीका है?
मैं समझता हूं कि ज्यादातर मामलों में सबकुछ ठीक होगा, लेकिन javadoc
, here में एक नोट है: "यदि आप प्रारूप या पार्सिंग पर अधिक नियंत्रण चाहते हैं, (या अपने उपयोगकर्ताओं को अधिक नियंत्रण देना चाहते हैं), आप DateFormat
को फैक्टरी विधियों से SimpleDateFormat
पर प्राप्त करने का प्रयास कर सकते हैं। यह अधिकांश देशों के लिए काम करेगा; आपको इसे try
ब्लॉक में रखना याद रखें यदि आपको असामान्य मिलता है। "
तो मुझे आश्चर्य है, अगर मुझे "असामान्य एक" का सामना करना पड़ता है तो मुझे क्या करना चाहिए?
कोड का नमूना:
/**
* Returns '\n'-separated string with available patterns.
* Optional adds appropriate language code to each pattern string.
*
* @param showLanguage Defines if language info is required.
* @return String with available patterns, optional (if showLanguage is set
* to "true") adds appropriate language code to each pattern.
*/
public String getPatternsForAvailableLocales(Boolean... showLanguage) {
/* Array of available locales */
Locale[] locales = DateFormat.getAvailableLocales();
String result = "";
for (Locale locale : locales) {
/* Add language info, if necessary */
if ((showLanguage.length > 0) && (showLanguage[0])) {
result += locale.getLanguage() + '\t';
}
/* Retrieving pattern */
try {
result += ((SimpleDateFormat)
DateFormat.getDateTimeInstance(DateFormat.SHORT,
DateFormat.SHORT, locale)).toPattern();
} catch (ClassCastException e) {
// ******************************** //
// What's up? Is there another way? //
// ******************************** //
}
result += '\n';
}
return result;
}
मुझे यकीन नहीं है कि अगर आप "असामान्य सामना करते हैं" तो आप कुछ भी कर सकते हैं क्योंकि यह पैटर्न-आधारित नहीं हो सकता है। विशेष रूप से क्योंकि एक डेवलपर 'java.text.spi.DateFormatProvider' के माध्यम से अपना' डेटफॉर्मैट 'प्रदान कर सकता है। आपके उत्तर के लिए –