2013-03-15 6 views
10

इस दिनांक स्ट्रिंग को कैसे पार्स करें 2013-03-13T20: 59: 31 + 0000 दिनांक वस्तु में?कैसे पार्स 2013-03-13T20: 59: 31 + 0000 दिनांक स्ट्रिंग दिनांक

मैंने इस तरह से प्रयास किया लेकिन काम नहीं किया।

DateFormat df = new SimpleDateFormat("YYYY-MM-DDThh:mm:ssTZD"); 
Date result = df.parse(time); 
+0

vrijeme? यह क्या है ? – yannicuLar

+1

मानते हुए 'vrijeme = "2013-03-13T20: 59: 31 + 0000"' मेरा उत्तर नीचे देखें। अंत में टीजेडडी के साथ आपका इरादा क्या था? ज़ेड वह है जो आपको टाइमज़ोन के लिए चाहिए। डी साल में दिन होगा लेकिन आपके पास अपने 'vrijeme' में नहीं है, इसलिए यह सही ढंग से पार्स नहीं करेगा – msam

+0

अगली बार, अनुवाद लिंक शामिल करना याद रखें। कम से कम यह हमें आपकी भाषा का अनुमान लगाने से बचाएगा;) – yannicuLar

उत्तर

22

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");

वर्ष निम्न मामला है y। कि इनपुट जो 2013-03-13T20:59:31+0000 में तारीख से संबंधित नहीं हैं ('टी' की तरह कर रहे हैं कोई भी वर्ण '' में उद्धृत किया जाना चाहिए।

परिभाषित पैटर्न पत्र की सूची के लिए documentation

पार्स चेकों को देखने के दिए गए दिनांक स्वरूप आपके द्वारा निर्दिष्ट है कि जाँच नीचे देखें के बाद एक विशिष्ट प्रारूप में दिनांक मुद्रित करने के लिएः। सभी के लिए

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ"); 
Date result; 
try { 
    result = df.parse("2013-03-13T20:59:31+0000"); 
    System.out.println("date:"+result); //prints date in current locale 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    sdf.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println(sdf.format(result)); //prints date in the format sdf 
} 
+0

काम नहीं कर रहा है .... –

+0

@ HarisDautović क्या आप टी को घेरने के लिए सही उपयोग कर रहे हैं? यह Alt + 39 कुछ अन्य apostrophe नहीं है जैसे ' – msam

+0

ALT + 39 =) .... मुझे समाधान मिला, मेरा जवाब जांचें। –

20

प्रयास करें:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 

जांच http://developer.android.com/reference/java/text/SimpleDateFormat.html

विशिष्ट में

:

    yyyy-MM-dd 1969-12-31 
       yyyy-MM-dd 1970-01-01 
      yyyy-MM-dd HH:mm 1969-12-31 16:00 
      yyyy-MM-dd HH:mm 1970-01-01 00:00 
      yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800 
      yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000 
    yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800 
    yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000 
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800 
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000 
+0

उत्तर के लिए धन्यवाद, हम्म .. मेरे पास अपवाद है: अज्ञात पैटर्न वर्ण 'टी' –

+0

दिनांकफॉर्मैट डीएफ = नया SimpleDateFormat ("yyyy-MM-dd'T'HH: mm: ssZ") ; – Nermeen

3

इस प्रयास करें:

SimpleDateFormat formatDate; 
formatDate= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
0

सब लोग हैं, जो मेरी मदद करने की कोशिश की करने के लिए धन्यवाद ... (+1) .......

यह काम करता है: "yyyy-MM-dd'T'HH:mm:ss"

+0

को संदर्भित करता है आप समय क्षेत्र के लिए एसएस के बाद एक जेड जोड़ सकते हैं अन्यथा "2013-03-13T20: 59: 31 + 9999" भी स्वीकार किया जाएगा – msam

+0

जब मैं जोड़ता हूं जेड ("yyyy-MM-dd'T'HH: mm: ssZ"), घंटे सही ढंग से पार्स नहीं है, एक से बढ़ा है। –

+1

ऐसा इसलिए है क्योंकि जब आप println करते हैं तो तिथि आपके लोकेल में सुधारित होती है। क्या आप जीएमटी + 1 में हैं? ... मैं आपको जीएमटी में तारीख को आउटपुट करने का तरीका दिखाने के लिए कोड जोड़ूंगा – msam

0

लिए 2017/02/08 06:23:35 +0000 दिनांक स्वरूप इस तरह, मैं प्रारूप नीचे का उपयोग करें:

SimpleDateFormat formatDate; 
formatDate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ZZZ"); 

इसका मेरे लिए काम कर। अन्य जवाब मेरे लिए काम नहीं कर रहे हैं।

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