जावा तिथि प्रारूप - अतिरिक्त वर्णों सहित


88

जावा में php दिनांक () शैली प्रारूपण के बराबर है? मेरा मतलब है, php में, मैं अक्षर-अक्षर से बच सकता हूं कि उन्हें शाब्दिक रूप से व्यवहार किया जाए। यानी yyyy \ y \ e \ a \ r 2010 वर्ष बन जाएगा । मुझे जावा में कुछ भी समान नहीं मिला, सभी उदाहरण केवल अंतर्निहित तिथि प्रारूपों से निपटते हैं।

विशेष रूप से, मैं के साथ सौदा JCalendar तिथि पिकर और उनके dateFormatString संपत्ति।

मुझे इसकी आवश्यकता है क्योंकि मेरे लोकेल में दिनांक प्रारूप में सभी प्रकार के अतिरिक्त सामान को लिखना आवश्यक है, जैसे d। (दिन के लिए) दिनों के बाद भाग, मी। (वर्षों के लिए) वर्षों के बाद और इतने पर। सबसे खराब स्थिति में मैं स्ट्रिंग रिप्लेस या रीजेक्सपी का उपयोग कर सकता हूं लेकिन शायद इसका एक सरल तरीका है? अग्रिम में धन्यवाद!


1
2019 में या बाद में इसे पढ़ने वाले किसी भी व्यक्ति के लिए, SimpleDateFormatएक-दो उत्तरों में इस्तेमाल किया जाने वाला वर्ग बेहद परेशान करने वाला और लंबे समय तक पुराना है। इससे बचो। इसके बजाय मार्क जेरोनिमस द्वारा संक्षिप्त उत्तर का उपयोग करें जावा, आधुनिक जावा तिथि और समय एपीआई का उपयोग
ओले वीवी

जवाबों:


165

ज़रूर, SimpleDateFormat के साथ आप शाब्दिक तार शामिल कर सकते हैं:

दिनांक और समय के पैटर्न के तार के भीतर, 'ए' से 'जेड' तक और 'ए' से 'जेड' तक के अयोग्य अक्षरों को एक तिथि या समय स्ट्रिंग के घटकों का प्रतिनिधित्व करने वाले पैटर्न अक्षरों के रूप में व्याख्या की जाती है। व्याख्या से बचने के लिए एकल उद्धरण (') का उपयोग करके पाठ को उद्धृत किया जा सकता है। "''" एकल उद्धरण का प्रतिनिधित्व करता है। अन्य सभी पात्रों की व्याख्या नहीं की गई है; वे पार्सिंग के दौरान इनपुट स्ट्रिंग के खिलाफ स्वरूपण या मिलान के दौरान बस आउटपुट स्ट्रिंग में कॉपी होते हैं।

 "hh 'o''clock' a, zzzz"    12 o'clock PM, Pacific Daylight Time

सुपर, बिल्कुल वही जो मुझे चाहिए। हैरानी की बात यह है कि मैंने ऐसी किसी भी उदाहरण को कई उदाहरणों में नहीं पाया है जिसे मैंने वेब में ब्राउज़ किया है :) बहुत बहुत धन्यवाद!
सेजेनस

1
मैं बोली चरित्र से कैसे बचूँ? मैं प्रारूप मिमी के साथ कुछ करने की कोशिश कर रहा हूं '। उदाहरण के लिए 46 की तरह 46 मिनट का संकेत '।
सोती

3
@Sotti: 46''। पहला भागने वाला दूसरा।
थिलो

1
FYI करें, बहुत परेशान करने वाली तारीख-समय की कक्षाएं, जैसे कि java.util.Date, java.util.Calendarऔर java.text.SimpleDateFormatअब विरासत है , जावा 8 और बाद में निर्मित java.time कक्षाओं द्वारा ली गई ।
बेसिल बोर्के



6

java.time

मार्क जेरोनिमस ने पहले ही कहा था । मैं इसे थोड़ा और दूर कर रहा हूं। बस पाठ को एकल उद्धरण के अंदर शाब्दिक रूप से मुद्रित करने के लिए रखें।

    DateTimeFormatter yearFormatter = DateTimeFormatter.ofPattern("yyyy 'year'");
    System.out.println(LocalDate.of(2010, Month.FEBRUARY, 3).format(yearFormatter));
    System.out.println(Year.of(2010).format(yearFormatter));
    System.out.println(ZonedDateTime.now(ZoneId.of("Europe/Vilnius")).format(yearFormatter));

अभी चल रहा है जब आउटपुट:

2010 year
2010 year
2019 year

यदि आप एक DateTimeFormatterBuilderऔर इसके appendPatternतरीके का उपयोग कर रहे हैं , तो उसी तरह एकल उद्धरण का उपयोग करें। या इसकी appendLiteralविधि का उपयोग करें और कोई उद्धरण नहीं।

हम प्रारूप में एक ही बोली कैसे लगाते हैं? दो एकल उद्धरण एक का उत्पादन करते हैं। इससे कोई फर्क नहीं पड़ता कि डबल सिंगल कोट सिंगल कोट्स के अंदर है या नहीं:

    DateTimeFormatter formatterWithSingleQuote = DateTimeFormatter.ofPattern("H mm'' ss\"");
    System.out.println(LocalTime.now(ZoneId.of("Europe/London")).format(formatterWithSingleQuote));

10 28 '34 "

    DateTimeFormatter formatterWithSingleQuoteInsideSingleQuotes
            = DateTimeFormatter.ofPattern("hh 'o''clock' a, zzzz", Locale.ENGLISH);
    System.out.println(ZonedDateTime.now(ZoneId.of("America/Los_Angeles"))
            .format(formatterWithSingleQuoteInsideSingleQuotes));

02 बजे, प्रशांत डेलाइट समय

उपरोक्त सभी फॉर्मेटर्स का उपयोग पार्सिंग के लिए भी किया जा सकता है। उदाहरण के लिए:

    LocalTime time = LocalTime.parse("16 43' 56\"", formatterWithSingleQuote);
    System.out.println(time);

16:43:56

SimpleDateFormatलगभग 10 साल पहले यह सवाल पूछे जाने पर जिस वर्ग का इस्तेमाल किया गया था वह बेहद तकलीफदेह और पुराना है। मेरा सुझाव है कि इसके बजाय आप जावा का उपयोग करें। आधुनिक जावा तिथि और समय एपीआई। यही कारण है कि मैं बस यही प्रदर्शित करता हूं।

लिंक


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.