我正在编写Junit测试,以验证在将数据转换为其他格式后输入的数据。如何将像“1/1/1970”这样的字符串转换为格式为19700101000000的日期对象?我试过这个:
DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = format.parse("1/1/1970");
但是“1/1/1970”会抛出Unparseable date
ParseException。谢谢!
答案 0 :(得分:2)
您必须使用不同的 DateFormat
来解析和格式化。现在,您正在使用"1/1/1970"
并尝试使用日期格式" yyyyMMddHHmmss"来阅读它。您需要使用MM/dd/yyyy
格式解析,获取Date
,然后格式化您的格式&#34 ; YYYYMMDDHHMMSS"
答案 1 :(得分: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")));
答案 2 :(得分:0)
正如Louis Wasserman所说,format.parse输入日期String到Date对象。然后使用该Date对象作为另一个SimpleDateFormat对象的输入。
这样的事情:
IsoMessage.writeData()
提供“1/1/1970”作为输入参数,输出为:
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);
}
}