簡體   English   中英

如何在Java中將Formatted String解析為Date對象

[英]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 GMTWed, 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的實例。 這有兩個原因:

  1. 你不知道你正在處理哪種日歷(Gregorian?Mayan?Vegan?)。
  2. Calendar使用您不一定要設置的默認值初始化其字段。 當SimpleDateFormat在它創建的Calendar實例上調用getTime()以返回Date時,該Date將具有默認字段值,這些值不是由您提交的字符串開頭指示的。

在進行ft.format(t)調用時,這些默認值會產生影響。 我發現解決這個問題的唯一方法就是直接使用Calendar類(這完全不重要,BTW。)我會在以后有更多時間時嘗試提供代碼示例。 與此同時,請查看javafx.util.converter.DateStringConverter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM