[英]Java parse a 8601 formatted string to a more readable date parse error
[英]How to parse a Formatted String into Date object in Java
在Java中,如何將“Wed,05 Jun 2013 00:48:12 GMT”解析為Date對象,然后以相同的格式打印日期對象。
我試過這個:
String dStr= "Wed, 05 Jun 2013 00:48:12 GMT";
SimpleDateFormat ft = new SimpleDateFormat ("E, dd MMM yyyy hh:mm:ss ZZZ");
Date t = ft.parse(dStr);
System.out.println(t);
System.out.println(ft.format(t));
結果是
Wed Jun 05 10:48:12 EST 2013
Wed, 05 Jun 2013 10:48:12 +1000
提前致謝:
您沒有錯誤,兩者都有: Wed, 05 Jun 2013 00:48:12 GMT
和Wed, 05 Jun 2013 00:48:12 GMT
代表同一時間,第一個是GMT(Grenweech),第二個是GMT與澳大利亞(EST)同時,您只需要正確配置您的時區。
如果您想在GMT中打印相同的日期,請將此行添加到您的代碼中:
ft.setTimeZone(TimeZone.getTimeZone("GMT"));
現在,如果您還希望使用時區打印日期為“GMT”而不是“+0000”,請按@HewWolff回答 (使用zzz而不是ZZZ)
看起來你想要zzz
而不是ZZZ
。 這應該可以幫助您將時區作為代碼而不是數字來讀/寫。
這解決了您的問題:
import java.text.*;
import java.util.*;
public class DateIt{
public static void main(String [] args) throws Exception{
String dStr= "Wed, 05 Jun 2013 00:48:12 GMT";
SimpleDateFormat ft = new SimpleDateFormat ("E, dd MMM yyyy HH:mm:ss z");
Date t = ft.parse(dStr);
TimeZone gmt = TimeZone.getTimeZone("England/London");
ft.setTimeZone(gmt);
System.out.println(t);
System.out.println(ft.format(t));
}
}
呃 - 我之前遇到過這個問題。
SimpleDateFormat.parse(String)
方法(我懷疑)使用Calendar
的實例。 這有兩個原因:
在進行ft.format(t)
調用時,這些默認值會產生影響。 我發現解決這個問題的唯一方法就是直接使用Calendar類(這完全不重要,BTW。)我會在以后有更多時間時嘗試提供代碼示例。 與此同時,請查看javafx.util.converter.DateStringConverter
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.