将字符串“1/1/1970”转换为格式为“19700101000000”的日期对象?

时间:2016-02-11 21:09:03

标签: java date

我正在编写Junit测试,以验证在将数据转换为其他格式后输入的数据。如何将像“1/1/1970”这样的字符串转换为格式为19700101000000的日期对象?我试过这个:

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

但是“1/1/1970”会抛出Unparseable date ParseException。谢谢!

3 个答案:

答案 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);
  }
}