2015-02-19 7 views
5

मेरे पास निम्नलिखित स्ट्रिंग है: "05 एक्स 02"। मैं इसे आज तक कैसे बदल सकता हूं? मैं इसे "05 10 02" स्ट्रिंग में परिवर्तित नहीं करना चाहता हूं और फिर आज तक। क्या यह संभव है?स्ट्रिंग को आज तक कनवर्ट करें - रोमन महीने

सहायता के लिए धन्यवाद।

अब तक मैं उपयोग

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd M/L yy"); 

कोशिश कर रहा था लेकिन यह काम नहीं करता। डेटटाइमफॉर्मेटरबिल्डर का भी उपयोग करने का प्रयास करें, लेकिन यहां मैं पूरी तरह से खो गया हूं।

+0

हाँ, यह संभव है। कृपया दिखाएं कि आपने अभी तक क्या प्रयास किया है और यह बताएं कि विशिष्ट समस्या क्या है। साथ ही, आप उस प्रारूप को बाईपास करके कैसे योजना बना रहे हैं जिसे 'दिनांक' वास्तव में पढ़ा जा सकता है? इस प्रतीत होता है मनमाने ढंग से आवश्यकता का कारण क्या है? – tnw

+5

आप किस पार्सिंग का उपयोग करने की कोशिश कर रहे हैं - 'SimpleDateFormat'? क्या आपने 'SimpleDateFormat.setDateFormatSymbols' की कोशिश की है और प्रारूप प्रतीकों का एक सेट प्रदान किया है जहां महीने के नाम' I', 'II' आदि हैं? –

उत्तर

10

आप महीने

के लिए डिफ़ॉल्ट प्रारूप प्रतीकों को बदल सकते हैं रोमन संख्या के लिए
DateFormatSymbols symbols = DateFormatSymbols.getInstance(); 

final String[] romanMonths = {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII"}; 
symbols.setMonths(romanMonths); 

SimpleDateFormat formatter = new SimpleDateFormat("dd MMMM yy", symbols); 

System.out.println("My date " + formatter.parse("05 X 02")); 

Here कैसे कस्टम स्वरूपण प्रतीकों की के बारे में एक अच्छा ट्यूटोरियल है।

आप के माध्यम से setMonths()

अद्यतन setShortMonths() या पूरे महीने के माध्यम से या तो ही महीनों बदलने के लिए चुन सकते हैं: यहाँ JDK8

से DateTimeFormatterBuilder के साथ एक संस्करण
static final ImmutableMap<Long, String> ROMAN_MONTHS = ImmutableMap.<Long, String>builder() 
       .put(1L, "I").put(2L, "II").put(3L, "III").put(4L, "IV").put(5L, "V") 
       .put(6L, "VI").put(7L, "VII").put(8L, "VIII").put(9L, "IX").put(10L, "X") 
       .put(11L, "XI").put(12L, "XII").build(); 

DateTimeFormatter formatter = new DateTimeFormatterBuilder() 
        .appendValue(ChronoField.DAY_OF_MONTH, 1, 2, SignStyle.NORMAL) 
        .appendLiteral(' ') 
        .appendText(ChronoField.MONTH_OF_YEAR, ROMAN_MONTHS) 
        .appendLiteral(' ') 
        .appendValue(ChronoField.YEAR, 4) 
        .toFormatter(); 

System.out.println("My date " + formatter.parse("5 X 2012")); 
+0

बहुत बढ़िया है जो मुझे चाहिए, बहुत बहुत धन्यवाद। – Pulkownik

+0

मैंने जावा 8 बीटीडब्ल्यू के साथ ऐसा करने के लिए एक अपडेट भी जोड़ा, एक नज़र डालें। – vtor

+0

अद्यतन के लिए धन्यवाद, लेकिन दुर्भाग्य से मुझे अभी भी java.util.date का उपयोग करना है। – Pulkownik

संबंधित मुद्दे