आप Joda समय उपयोग कर रहे हैं (और क्यों नहीं होगा कि आप किसी भी अगर आपके पास विकल्प यह लगभग JDK 1.7 में बंडल गया) आप कुछ इस तरह कर सकता है:?
String patternForStyleAndLocale = org.joda.time.format.DateTimeFormat.patternForStyle("S-", locale);
जो दुर्भाग्य से केवल एक दो अंकों साल देता है। उस के लिए एक काम के आसपास होगा:
if (!org.apache.commons.lang.StringUtils.contains(patternForStyleAndLocale, "yyyy"))
{
// The default Joda pattern only has a two digit year for US and Europe, China etc - but we want four digit years
patternForStyleAndLocale = StringUtils.replace(patternForStyleAndLocale, "yy", "yyyy");
}
और आप उन्हें एक ConcurrentHashMap<Locale, String>
में कैशिंग विचार कर सकते हैं।
"dd MMM yyyy" // UK: "25 Dec 2010" FRANCE: "25 déc. 2010" etc..
:
इस तरह एक पूर्व स्थानीय पैटर्न के रूप में एक अंकीय तिथि करने के बारे में अच्छी बात यह है कि यह किसी भी आगे स्थानीयकरण बाद में की आवश्यकता नहीं है, अगर आप इस तरह के रूप में एक पद्धति का उपयोग कर रहे थे के रूप में यह करना होगा है
हालांकि ... मैंने आपकी बाद की टिप्पणी से अभी देखा है कि आप जावास्क्रिप्ट को पैटर्न पास करना चाहते हैं - जेएस जावा में विभिन्न पैटर्न स्वरूपण का उपयोग करने के बाद से बहुत मुश्किल हो सकता है (उदाहरण के लिए आईएसओ दिनांक "yyyy-MM-dd"
जावा में और "yy-mm-dd"
में जे एस)। मैंने इसे हल करने का प्रयास नहीं किया है, लेकिन मैं जावा पैटर्न से जेएस तक बस मैप करने के लिए जेएस या जावा में कुछ स्ट्रिंग मैपिंग का उपयोग करता हूं। आपको निश्चित रूप से प्रत्येक भाषा के लिए सामना करने वाले प्रत्येक पैटर्न को जानना होगा।
क्यों न केवल पैटर्न के बजाय "इस अन्य स्थान" में लोकेल का उपयोग क्यों करें? –
हाय पेटल इवानोव, असल में, मैं पैटर्न को जावास्क्रिप्ट में पास करना चाहता हूं इसलिए मैं लोकेल का उपयोग नहीं कर सकता। –