2013-04-26 52 views
2

我想解析一個字符串格式爲「星期一,5月15日下午1:00」到一個日期時間,以便我可以輸入到數據庫中。然而,當我測試這個時,解析不會返回正確的一天。有沒有人有任何想法發生了什麼?Java SimpleDateFormat解析返回錯誤的日子

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class App 
{ 
    public static void main(String[] args) throws ParseException 
    { 

     String inDateTime = "Monday, May 15 at 1:00 PM"; 

     Date date = new SimpleDateFormat("EEE, MMM dd 'at' hh:mm aa").parse(inDateTime); 

     String outDateTime = new SimpleDateFormat("EEEEEE MMMMMM dd hh:mm aa").format(date); 

     System.out.println(outDateTime); 

    } 
} 

而且從NetBeans中

[exec:exec] 
Friday May 15 01:00 PM 

爲什麼週一正在變成周五任何想法的輸出?

回答

3

你沒有設置年,所以SimpleDateFormat正在使用從時代的一個。 1970年5月15日發生在週五。

如果存在月份和日期字段,則會忽略日期輸入字段,因此可以省略該字段。

您需要指定一個星期一發生在5月15日的年份。

+0

謝謝你,我會人爲地在今年字符串的開頭添加,使其工作,我會接受的格式它不包括年份。 – Ergosphere 2013-04-26 21:49:36

0

代碼等同放着清單

String inDateTime = "1970 Monday, May 15 at 1:00 PM"; 

    Date date = new SimpleDateFormat("yyyy EEE, MMM dd 'at' hh:mm aa") 
       .parse(inDateTime); 

String outDateTime = new SimpleDateFormat("EEEEEE MMMMMM dd hh:mm aa") 
       .format(date); 

    System.out.println(outDateTime); //prints Friday May 15 01:00 PM 

所以,請加year

+0

謝謝,我會在一年中人爲地添加到字符串的開頭使其工作,我將在其中收到的格式不包括年份。 – Ergosphere 2013-04-26 21:48:04

+0

Ok.no問題幫助。將其標記爲答案,如果有幫助,請點擊標記。 – 2013-04-27 04:42:48