2015-12-15 50 views
0
的Java日期格式工作

我有一個程序,在程序,如yyyy/MM/dd HH:mm:ss a製作更短的價值觀

後來在節目的開始讀取用戶的DateFormat一勞永逸分析文件和使用DATEFORMAT所有日期在文件中。但是最近我收到了一個文件,其中99%的日期是2014/09/01 12:00:04 AM所以用戶可以輸入yyyy/MM/dd HH:mm:ss a

然而,該文件中的一個日期只是2014/09/01,其中日期格式yyyy/MM/dd HH:mm:ss a失敗。

爲什麼yyyy/MM/dd HH:mm:ss a格式的日期格式較短,例如格式爲yyyy/MM/dd

我想要的是java程序使用的格式yyyy/MM/dd HH:mm:ss a解析低於以下兩個日期:

  1. 2014年9月1日上午12時00分04秒
  2. 2014年9月1日

謝謝

+0

你如何解析日期?你可以分享代碼嗎? – bluelurker

+0

SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat(USERs INPUT); // 「YYYY/MM/DD hh:mm:ss的一個 後來文件被讀取 緩衝區讀取器環路 D1 = DATE_TIME_FORMAT.parse(當前日期在文件中的行); //可以是」 2014/09/01上午12時00分04秒」或只是‘2014年9月1日’ 變量綁定 結束循環 –

+0

@NomanK請與編輯的詳細信息您的問題,如示例代碼,而不是後註釋。 –

回答

1

您必須使用兩種格式。檢查下面的例子

DateFormat df = new DateFormat() { 
     static final String FORMAT1 = "yyyy/MM/dd HH:mm:ss"; 
     static final String FORMAT2 = "yyyy/MM/dd"; 
     final SimpleDateFormat sdf1 = new SimpleDateFormat(FORMAT1); 
     final SimpleDateFormat sdf2 = new SimpleDateFormat(FORMAT2); 

     @Override 
     public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) { 
      return null; 
     } 

     @Override 
     public Date parse(String source, ParsePosition pos) { 
      if (source.length() - pos.getIndex() == FORMAT1.length()) 
       return sdf1.parse(source, pos); 
      return sdf2.parse(source, pos); 
     } 
}; 
System.out.println(df.parse("2014/09/01 12:00:04 AM")); 
System.out.println(df.parse("2014/09/01")); 
+0

感謝Thusitia,但格式來自用戶,我不能改變目前prod問題的代碼,我正在尋找一個通用的DateFormat :) –

+0

在解析函數中你已經聲明瞭兩個參數在函數之一是字符串源和一個是ParsePosition POS但當你是calli的時候這個函數你只傳遞一個變量給函數? –

+0

@ L-X是一個重載的分析方法。有2個解析方法 –