2013-05-21 198 views
-4

我有一個日期格式,如「SA25MAY」;我需要將它轉換爲日期時間變量,然後我想在其中添加一天。然後我需要以相同的格式返回答案。請做一些要緊的Java:日期時間轉換

try { 
    String str_date = "SA25MAY"; 
    DateFormat formatter; 
    Date date; 
    formatter = new SimpleDateFormat("ddd-dd-MMM"); 
    date = (Date) formatter.parse(str_date); 
    System.out.println("Today is " + date); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

錯誤:

java.text.ParseException: Unparseable date: "SA25MAY" 
at java.text.DateFormat.parse(DateFormat.java:337) 
at javadatatable.JavaDataTable.main(JavaDataTable.java:29) 

在這裏,我不知道如何解決這個問題。

+3

['SimpleDateFormat'](http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html)是你正在尋找的。 – sp00m

+0

我收到像「SA25MAY」(Saturday25MAY)這樣的輸入,我不知道如何將它轉換爲日期時間變量 –

+1

請提供剛剛在您的問題中嘗試的代碼片段。 – sp00m

回答

1

如果因閏年(2月29日)而知道年份,則只能添加一天。

如果當年是當年,以下解決方案應該做的工作:

對於 「SA25MAY」:

try { 
    String str_date = "SA25MAY"; 

    // remove SA 
    str_date = str_date.replaceFirst("..", ""); 

    // add current year 
    Calendar c = Calendar.getInstance(); 
    str_date = c.get(Calendar.YEAR) + str_date; 

    // parse date 
    Date date; 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyyddMMM"); 
    date = formatter.parse(str_date); 
    System.out.println("Today is " + date); 

    // add day 
    c.setTime(date); 
    c.add(Calendar.DATE, 1); 

    // rebuild the old pattern with the new date 
    SimpleDateFormat formatter2 = new SimpleDateFormat("EEEddMMM"); 
    String tomorrow = formatter2.format(c.getTime()); 
    tomorrow = tomorrow.toUpperCase(); 
    tomorrow = tomorrow.substring(0, 2) + tomorrow.substring(3); 
    System.out.println("Tomorrow is " + tomorrow); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

或爲 「SA-25-MAY」:

try { 
    String str_date = "SA-25-MAY"; 

    // remove SA 
    str_date = str_date.replaceFirst("..-", ""); 

    // add current year 
    Calendar c = Calendar.getInstance(); 
    str_date = c.get(Calendar.YEAR) + "-" + str_date; 

    // parse date 
    Date date; 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-dd-MMM"); 
    date = formatter.parse(str_date); 
    System.out.println("Today is " + date); 

    // add day 
    c.setTime(date); 
    c.add(Calendar.DATE, 1); 

    // rebuild the old pattern with the new date 
    SimpleDateFormat formatter2 = new SimpleDateFormat("EEE-dd-MMM"); 
    String tomorrow = formatter2.format(c.getTime()); 
    tomorrow = tomorrow.toUpperCase(); 
    tomorrow = tomorrow.substring(0, 2) + tomorrow.substring(3); 
    System.out.println("Tomorrow is " + tomorrow); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

非常感謝...它的工作正常! –

4

ddd不能匹配SUN。如果您想在一週內匹配星期幾名稱,請改用EEE

+0

謝謝工作正常。但是在這裏,我需要給出星期日的SUN,星期一的MON等等。但是我得到了像星期六一樣的輸入。它是一個兩個字母。我試圖匹配SU到EE,拋出錯誤 –