2017-10-09 83 views
0

我有一個字符串"2017-01-03T02:20:52+00:00"我想轉換爲LocalDateTime無法解析字符串到Java日期

我試過下面

import java.time.format.DateTimeFormatter; 
import java.time.LocalDateTime; 

public class HelloWorld{ 

    public static void main(String []args){ 
     System.out.println("Hello World"); 
     String date = "2009-07-16T19:20:30-05:00"; 
     String pattern = "yyyy-MM-dd'T'HH:mm:ssZ"; 
     DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern(pattern); 
     LocalDateTime dateTime = LocalDateTime.parse(date, inputFormatter); 
     System.out.println(dateTime); 
    } 
} 

的代碼,我嘗試了各種模式,但每次我得到如下錯誤時間:

Exception in thread "main" java.time.format.DateTimeParseException: Text '2009-07-16T19:20:30-05:00' could not be parsed at index 19 
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949) 
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851) 
    at java.time.LocalDateTime.parse(LocalDateTime.java:492) 
    at HelloWorld.main(HelloWorld.java:11) 
+0

在指數19 ,有一個「 - 」,可能不適合使用的模式... – deHaar

+1

請參閱Java DateFormat文檔:http://docs.oracle.com/javase/7/docs/api/j AVA /文本/ SimpleDateFormat.html。符號'Z'是RFC 822時區,例如:-0800。所以如果你從輸入中刪除分號,它應該可以正常工作。 – Korashen

+0

是的,@科拉申是對的。否則,您可以在模式中使用X而不是Z來使用ISO 8601格式。 –

回答

4

Z不允許在時區:。使用ZZZZZ(五個Z)作爲擴展格式。

+0

謝謝,這對我很有用。 – Abhijit

0

date字符串的格式不正確

更改它像這樣:

String date = "2009-07-16T19:20:30-0500"; 

注意timezone之前的變化。

0

如果你要保持你的日期格式,你可以用這個模式:

String pattern = "yyyy-MM-dd'T'HH:mm:ssXXX"; 
0

試試這個:

String date = "2009-07-16T19:20:30-0500"; 
String pattern = "yyyy-MM-dd'T'HH:mm:ssZ"; 
在你的日期字符串

String date = "2009-07-16T19:20:30-05:00"; 
String pattern = "yyyy-MM-dd'T'HH:mm:ssz";