2016-02-11 21 views
0

我正在編寫Junit測試來驗證在將數據轉換爲其他格式後輸入的數據。如何將像「1/1/1970」這樣的字符串轉換爲像19700101000000那樣格式化的日期對象?我嘗試這樣做:將字符串「1/1/1970」轉換爲格式爲「19700101000000」的日期對象?

DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); 
Date date = format.parse("1/1/1970"); 

但是, 「1/1/1970」 拋出Unparseable date ParseException的。謝謝!

回答

2

您必須使用不同DateFormat s到解析和格式化。現在你正在採取"1/1/1970"並試圖以日期格式「yyyyMMddHHmmss」閱讀它。你需要解析的格式MM/dd/yyyy,拿出一個Date然後格式化您的格式「yyyyMMddHHmmss」。

+0

太好了!謝謝你的幫助! – kroe761

2

您需要使用一個格式化程序進行解析,然後使用另一個格式化程序重新格式化。這裏是老風格的代碼,以及內置於Java 8及更高版本的新的java.time API。

String input = "1/1/1970"; 

// Using SimpleDateFormat 
Date date = new SimpleDateFormat("M/d/yyyy").parse(input); 
System.out.println(new SimpleDateFormat("yyyyMMddHHmmss").format(date)); 

// Using Java 8 java.time 
LocalDate localDate = LocalDate.parse(input, DateTimeFormatter.ofPattern("M/d/uuuu")); 
System.out.println(localDate.atStartOfDay().format(DateTimeFormatter.ofPattern("uuuuMMddHHmmss"))); 
0

正如Louis Wasserman所指出的,format.parse將輸入日期String轉換爲Date對象。然後使用該Date對象作爲另一個SimpleDateFormat對象的輸入。

事情是這樣的:

public class DateFormatTest { 

public static void main(String[] args) { 
    String inputDate = args[0]; 
    java.util.Date d = null; 
    java.text.DateFormat inputDateFormat = new java.text.SimpleDateFormat("MM/dd/yyyy"); 
    java.text.DateFormat outputDateFormat = new java.text.SimpleDateFormat("yyyyMMddHHmmss"); 
    try { 
     d = inputDateFormat.parse(intputDate); 
    } catch (java.text.ParseException ex) { 
     System.err.println("something horrible went wrong!"); 
    } 
    String output = outputDateFormat.format(d); 
    System.out.println("The input date of: " + inputDate + " was re-formatted to: " + output); 
    } 
} 

提供 「1/1/1970」 作爲輸入參數,輸出是:

The input date of: 1/1/1970 was re-formatted to: 19700101000000 
相關問題