दिलचस्प पोस्ट
पायथन में Google प्रमाणक कार्यान्वयन स्वत: पूर्ण होने पर ट्रिगर किया गया कोई भी ईवेंट? एंड्रॉइड: पर रीसिव में पढ़ी गई एसएमएस को कैसे चिह्नित किया जाए एंड्रॉइड शेयर वाइए संवाद PHP में cURL का उपयोग कर फ़ाइल स्ट्रिंग पोस्ट करें? पृष्ठभूमि की प्रक्रिया के रूप में सर्वर पर जावा जार फ़ाइल चलाएं पीआईपी के साथ स्थापित अजगर संकुल के लिए निर्भरता संबंध की पहचान करना अजगर चेतावनियों को अक्षम कैसे करें WPF डिज़ाइनर को पुस्तकालयों को लोड करने में विफल क्यों होता है जो अप्रबंधित DLLs में कॉल करते हैं? एसक्यूएल: उपसर्ग के साथ तालिकाओं को हटाने आर में, किसी फ़ंक्शन पर भेजे जाने के बाद ऑब्जेक्ट का नाम कैसे प्राप्त करें? फ़ाइल में एक विशिष्ट पंक्ति को हटाना (अजगर) C # / WinForms में एक बहु भाषा अनुप्रयोग बनाने के लिए सर्वश्रेष्ठ अभ्यास? आईफ़ोन के लिए ओपन सोर्स कवर फ़्लो लाइब्रेरी क्या इंटरनेट एक्सप्लोरर 8 एचटीएमएल 5 का समर्थन करता है?

जावा स्ट्रिंग में दिनांक स्वरूप बदलें

मेरे पास एक String जो किसी तिथि का प्रतिनिधित्व करती है

 String date_s = "2011-01-18 00:00:00.0"; 

मैं इसे एक Date बदलना चाहता हूं और इसे YYYY-MM-DD प्रारूप में आउटपुट करना चाहता हूं।

2011-01-18

इसे कैसे प्राप्त किया जा सकता है?


ठीक है, मैं नीचे दिए गए उत्तरों के आधार पर, यहां कुछ मैंने कोशिश की है:

 String date_s = " 2011-01-18 00:00:00.0"; SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss"); Date date = dt.parse(date_s); SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd"); System.out.println(dt1.format(date)); 

लेकिन यह वांछित 2011-01-18 बजाय 02011-00-1 उत्पादन 02011-00-1 मैं क्या गलत कर रहा हूं?

Solutions Collecting From Web of "जावा स्ट्रिंग में दिनांक स्वरूप बदलें"

LocalDateTime#parse() (या ZonedDateTime#parse() यदि स्ट्रिंग को समय क्षेत्र के हिस्से में शामिल करना होता है) किसी String को किसी विशिष्ट प्रतिमान में LocalDateTime में पार्स करने के लिए।

 String oldstring = "2011-01-18 00:00:00.0"; LocalDateTime datetime = LocalDateTime.parse(oldstring, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S")); 

किसी विशिष्ट प्रतिमान में एक LocalDateTime को String में LocalDateTime करने के लिए LocalDateTime#format() (या ZonedDateTime#format() ) का उपयोग करें

 String newstring = datetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); System.out.println(newstring); // 2011-01-18 

या , जब आप जावा 8 पर नहीं हैं, तो एक String को एक Date में किसी विशिष्ट पैटर्न में पार्स SimpleDateFormat#parse() लिए SimpleDateFormat#parse() का उपयोग करें।

 String oldstring = "2011-01-18 00:00:00.0"; Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(oldstring); 

एक विशिष्ट पैटर्न में String में एक Date को प्रारूपित करने के लिए SimpleDateFormat#format() का उपयोग करें

 String newstring = new SimpleDateFormat("yyyy-MM-dd").format(date); System.out.println(newstring); // 2011-01-18 

यह भी देखें:

  • रूपांतरण के लिए जावा स्ट्रिंग

अद्यतन : आपके असफल प्रयासों के अनुसार: पैटर्न केस संवेदनशील होते हैं java.text.SimpleDateFormat javadoc पढ़ें क्या अलग-अलग भागों के लिए खड़ा है। तो उदाहरण के लिए महीनों के लिए M और मिनटों के लिए m है। इसके अलावा, साल चार अंकों की yyyyy , पांच yyyyy नहीं। मैं यहाँ ऊपर पोस्ट किए गए कोड स्निपेट्स के करीब देखो

फ़ॉर्मेटिंग केस-सेंसिटिव हैं इसलिए महीने एमएम के लिए USE MM (यह मिनट के लिए है) और yyyy संदर्भ के लिए आप निम्न चीटशीट का उपयोग कर सकते हैं।

 G Era designator Text AD y Year Year 1996; 96 Y Week year Year 2009; 09 M Month in year Month July; Jul; 07 w Week in year Number 27 W Week in month Number 2 D Day in year Number 189 d Day in month Number 10 F Day of week in month Number 2 E Day name in week Text Tuesday; Tue u Day number of week (1 = Monday, ..., 7 = Sunday) Number 1 a Am/pm marker Text PM H Hour in day (0-23) Number 0 k Hour in day (1-24) Number 24 K Hour in am/pm (0-11) Number 0 h Hour in am/pm (1-12) Number 12 m Minute in hour Number 30 s Second in minute Number 55 S Millisecond Number 978 z Time zone General time zone Pacific Standard Time; PST; GMT-08:00 Z Time zone RFC 822 time zone -0800 X Time zone ISO 8601 time zone -08; -0800; -08:00 

उदाहरण:

 "yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT "EEE, MMM d, ''yy" Wed, Jul 4, '01 "h:mm a" 12:08 PM "hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time "K:mm a, z" 0:08 PM, PDT "yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM "EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700 "yyMMddHHmmssZ" 010704120856-0700 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 2001-07-04T12:08:56.235-0700 "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" 2001-07-04T12:08:56.235-07:00 "YYYY-'W'ww-u" 2001-W27-3 

इसका उत्तर एक सरलडेटाफ़ॉर्मेट ऑब्जेक्ट बनाने के लिए है और इसे स्ट्रिंग्स टू डेट को पार्स करने और स्ट्रिंग्स को तारों को प्रारूपित करने के लिए इसका उपयोग करना है। यदि आप SimpleDateFormat का उपयोग करने की कोशिश की है और यह काम नहीं कर रहा है, तो कृपया अपना कोड और आपको प्राप्त होने वाली कोई भी त्रुटि दिखाएं।

परिशिष्ट: "मिमी" प्रारूप में स्ट्रिंग "MM" जैसा नहीं है। महीनों और मिमी मिनटों के लिए मिमी का उपयोग करें। इसके अलावा, yyyyy yyyy के समान नहीं है जैसे ,:

 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class FormateDate { public static void main(String[] args) throws ParseException { String date_s = "2011-01-18 00:00:00.0"; // *** note that it's "yyyy-MM-dd hh:mm:ss" not "yyyy-mm-dd hh:mm:ss" SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date = dt.parse(date_s); // *** same for the format String below SimpleDateFormat dt1 = new SimpleDateFormat("yyyy-MM-dd"); System.out.println(dt1.format(date)); } } 

जावा 8 और बाद में जावा। java.time पैकेज का उपयोग करना:

 String date = "2011-01-18 00:00:00.0"; TemporalAccessor temporal = DateTimeFormatter .ofPattern("yyyy-MM-dd HH:mm:ss.S") .parse(date); // use parse(date, LocalDateTime::from) to get LocalDateTime String output = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(temporal); 

केवल इसका उपयोग क्यों न करें

 Date convertToDate(String receivedDate) throws ParseException{ SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy"); Date date = formatter.parse(receivedDate); return date; } 

इसके अलावा, यह दूसरा तरीका है:

 DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); String requiredDate = df.format(new Date()).toString(); 

या

 Date requiredDate = df.format(new Date()); 

चीयर्स!

[BalusC के सुधारों को शामिल करने के लिए संपादित] सरलडेटाफ़ॉर्मेट क्लास को चाल करना चाहिए:

 String pattern = "yyyy-MM-dd HH:mm:ss.S"; SimpleDateFormat format = new SimpleDateFormat(pattern); try { Date date = format.parse("2011-01-18 00:00:00.0"); System.out.println(date); } catch (ParseException e) { e.printStackTrace(); } 
 try { String date_s = "2011-01-18 00:00:00.0"; SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); Date tempDate=simpledateformat.parse(date_s); SimpleDateFormat outputDateFormat = new SimpleDateFormat("yyyy-MM-dd"); System.out.println("Output date is = "+outputDateFormat.format(tempDate)); } catch (ParseException ex) { System.out.println("Parse Exception"); } 

कृपया यहां "दिनांक और समय पैटर्न" देखें http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

 import java.text.SimpleDateFormat; import java.util.Date; import java.text.ParseException; public class DateConversionExample{ public static void main(String arg[]){ try{ SimpleDateFormat sourceDateFormat = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss"); Date date = sourceDateFormat.parse("2011-01-18 00:00:00.0"); SimpleDateFormat targetDateFormat = new SimpleDateFormat("yyyy-MM-dd"); System.out.println(targetDateFormat.format(date)); }catch(ParseException e){ e.printStackTrace(); } } } 
 public class SystemDateTest { String stringDate; public static void main(String[] args) { SystemDateTest systemDateTest = new SystemDateTest(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-mm-yyyy hh:mm:ss"); systemDateTest.setStringDate(simpleDateFormat.format(systemDateTest.getDate())); System.out.println(systemDateTest.getStringDate()); } public Date getDate() { return new Date(); } public String getStringDate() { return stringDate; } public void setStringDate(String stringDate) { this.stringDate = stringDate; } } 
  String str = "2000-12-12"; Date dt = null; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); try { dt = formatter.parse(str); } catch (Exception e) { } JOptionPane.showMessageDialog(null, formatter.format(dt)); 

अन्य उत्तर सही हैं, मूल रूप से आपके पास अपने पैटर्न में "y" वर्णों की गलत संख्या थी

समय क्षेत्र

हालांकि एक और समस्या … आपने समय क्षेत्र को संबोधित नहीं किया। यदि आप यूटीसी का इरादा रखते हैं, तो आपको ऐसा कहना चाहिए था। यदि नहीं, तो उत्तर पूर्ण नहीं हैं। यदि आप चाहते हैं कि समय के बिना दिनांक भाग है, तो कोई समस्या नहीं है। लेकिन यदि आप आगे काम करते हैं जिसमें समय लग सकता है, तो आपको समय क्षेत्र निर्दिष्ट करना चाहिए।

Joda समय

यहां एक ही प्रकार का कोड है लेकिन तीसरे पक्ष के ओपन सोर्स जोडा-टाइम 2.3 लाइब्रेरी का उपयोग करते हुए

 // © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so. String date_s = "2011-01-18 00:00:00.0"; org.joda.time.format.DateTimeFormatter formatter = org.joda.time.format.DateTimeFormat.forPattern( "yyyy-MM-dd' 'HH:mm:ss.SSS" ); // By the way, if your date-time string conformed strictly to ISO 8601 including a 'T' rather than a SPACE ' ', you could // use a formatter built into Joda-Time rather than specify your own: ISODateTimeFormat.dateHourMinuteSecondFraction(). // Like this: //org.joda.time.DateTime dateTimeInUTC = org.joda.time.format.ISODateTimeFormat.dateHourMinuteSecondFraction().withZoneUTC().parseDateTime( date_s ); // Assuming the date-time string was meant to be in UTC (no time zone offset). org.joda.time.DateTime dateTimeInUTC = formatter.withZoneUTC().parseDateTime( date_s ); System.out.println( "dateTimeInUTC: " + dateTimeInUTC ); System.out.println( "dateTimeInUTC (date only): " + org.joda.time.format.ISODateTimeFormat.date().print( dateTimeInUTC ) ); System.out.println( "" ); // blank line. // Assuming the date-time string was meant to be in Kolkata time zone (formerly known as Calcutta). Offset is +5:30 from UTC (note the half-hour). org.joda.time.DateTimeZone kolkataTimeZone = org.joda.time.DateTimeZone.forID( "Asia/Kolkata" ); org.joda.time.DateTime dateTimeInKolkata = formatter.withZone( kolkataTimeZone ).parseDateTime( date_s ); System.out.println( "dateTimeInKolkata: " + dateTimeInKolkata ); System.out.println( "dateTimeInKolkata (date only): " + org.joda.time.format.ISODateTimeFormat.date().print( dateTimeInKolkata ) ); // This date-time in Kolkata is a different point in the time line of the Universe than the dateTimeInUTC instance created above. The date is even different. System.out.println( "dateTimeInKolkata adjusted to UTC: " + dateTimeInKolkata.toDateTime( org.joda.time.DateTimeZone.UTC ) ); 

चलाते समय …

 dateTimeInUTC: 2011-01-18T00:00:00.000Z dateTimeInUTC (date only): 2011-01-18 dateTimeInKolkata: 2011-01-18T00:00:00.000+05:30 dateTimeInKolkata (date only): 2011-01-18 dateTimeInKolkata adjusted to UTC: 2011-01-17T18:30:00.000Z 

आप उपस्ट्रिंग का उपयोग भी कर सकते हैं ()

 String date_s = "2011-01-18 00:00:00.0"; date_s.substring(0,10); 

यदि आप तारीख के सामने एक स्थान चाहते हैं, तो उपयोग करें

 String date_s = " 2011-01-18 00:00:00.0"; date_s.substring(1,11); 

आप बस का उपयोग कर सकते हैं:

 Date yourDate = new Date(); SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); String date = DATE_FORMAT.format(yourDate); 

यह पूरी तरह से काम करता है!

 private SimpleDateFormat dataFormat = new SimpleDateFormat("dd/MM/yyyy"); @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { if(value instanceof Date) { value = dataFormat.format(value); } return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); }; 

एक वाई फॉर्म को हटा दें SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd"); SimpleDateFormat dt1 = new SimpleDateFormat("yyyy-mm-dd");

आप जावा 8 की नई date कोशिश कर सकते हैं, अधिक जानकारी ओरेकल दस्तावेज़ीकरण पर पाई जा सकती है।

या आप पुराने एक को आज़मा सकते हैं

 public static Date getDateFromString(String format, String dateStr) { DateFormat formatter = new SimpleDateFormat(format); Date date = null; try { date = (Date) formatter.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return date; } public static String getDate(Date date, String dateFormat) { DateFormat formatter = new SimpleDateFormat(dateFormat); return formatter.format(date); }