2012-02-08 74 views
1

我得到了像「Wed,08 Feb 2012 09:06:41 +0000」的字符串。 我想取「日期」2012年2月8日和「時間」09:06。如何從Java中的String中獲取日期和時間?

我怎樣才能得到它?請幫幫我。

在此先感謝.. :)

+0

希望這會有所幫助。 http://stackoverflow.com/questions/8699587/android-java-time-format – Vaandu 2012-02-08 11:58:31

+1

很多明確的正確答案。請接受一個,不要離開我們:) – Mersenne 2012-02-08 12:44:27

回答

3

試試這個,

SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss"); 
try 
{ 
    Date date = (Date)sdf.parse("Wed, 08 Feb 2012 09:06:41 +0000"); 
    System.out.println(date); 
    SimpleDateFormat day = new SimpleDateFormat("dd-MMM-yyyy"); 
    SimpleDateFormat time = new SimpleDateFormat("HH:mm"); 
    System.out.println(day.format(date)); 
    System.out.println(time.format(date)); 
} 
catch (ParseException e) 
{ 
    e.printStackTrace(); 
} 

它會肯定工作。

+0

非常感謝你Pratik。 – Hardik 2012-02-08 12:30:52

1
Date d = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z").parse(yourString); 
1

您可以使用SimpleDateFormat。 SimpleDateFormat是一個以區域敏感的方式格式化和解析日期的具體類。它允許格式化(日期 - >文本),解析(文本 - >日期)和規範化。

你只需要一個正確的格式:

"EEE, d MMM yyyy HH:mm:ss Z" 
+0

如果我刪除Z.比它會工作...... BTW非常感謝。 – Hardik 2012-02-08 12:31:38

+1

@Hardik:如果你省略Z,那麼解析器將忽略字符串中的時區,並且不會產生確切的時間。您會看到「正確的」結果,但結果日期對象與生成字符串的日期對象不同。我認爲你需要深入瞭解Java如何存儲時間。這是關於這個的很好的[文章](http://www.odi.ch/prog/design/datetime.php)。 – Mersenne 2012-02-08 12:51:06

+0

燁巴迪,我明白........非常感謝老兄。 – Hardik 2012-02-08 13:00:35

0

使用下面的語句:

DateFormat fmt = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z"); 
Date date = (Date)fmt.parse("Wed, 08 Feb 2012 09:06:41 +0000"); 

「E,DD MMM YYYY HH:MM:SS Z」 這是你的解析器的模式。

「Wed,08 Feb 2012 09:06:41 +0000」實際上是您的日期字符串。

現在,日期對象包含結構化日期,您可以提取所需的所有內容。

0

您可以使用SimpleDateFormat

要顯示08 - 2月 - 2012可以作爲SimpleDateFormat的

SimpleDateFormat m_sdFormatter = new SimpleDateFormat("dd-MMM-yyyy"); 
m_sdFormatter.format(your date); 

要顯示 「時間」 09:06。你可以SimpleDateFormat的作爲

SimpleDateFormat m_sdFormatter = new SimpleDateFormat("HH:mm"); 
m_sdFormatter.format(your date); 
0

首先解析字符串轉換爲Date,然後格式化日期到你需要的字符串:

SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z"); 
    try { 
     Date date = (Date)sdf.parse("Wed, 08 Feb 2012 09:06:41 +0000"); 
     System.out.println(date); 
     SimpleDateFormat day = new SimpleDateFormat("dd-MMM-yyyy"); 
     SimpleDateFormat time = new SimpleDateFormat("HH:mm"); 
     System.out.println(day.format(date)); 
     System.out.println(time.format(date)); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 

輸出:

Wed Feb 08 09:06:41 GMT 2012 
8-Feb-2012 
09:06 
+0

我得到了約會。但是,它給了時間14:36 .. ?? – Hardik 2012-02-08 12:17:32

+2

@Hardik:沒錯。源字符串表示「+0000」時區。解析日期將顯示在您的本地時區(如'.toString()'調用)。但事實上,這是同一時間。 – Mersenne 2012-02-08 12:34:10

+0

嗯.......非常感謝Dave&Mersenne。 – Hardik 2012-02-08 12:40:01

相關問題