日期未在Java中正确格式化

时间:2017-05-27 13:26:12

标签: java datetime date-formatting java-date

我正在尝试格式化格式的日期" yyyy-MM-dd" to" dd MM,yyyy"但是对于某些日期,我得到了不正确的一年。

这是我的代码:

DateFormat originalFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
DateFormat targetFormat = new SimpleDateFormat("dd MMMM, yyyy");
Date date = originalFormat.parse(dob);
dob = targetFormat.format(date);

输入法:27-05-1999
产出:0032年10月19日

如您所见,输入日期与输出日期不同。我无法理解如何做到这一点。

4 个答案:

答案 0 :(得分:1)

你的模式错了。您输入27-05-1999,因此正确的日期格式为dd-MM-yyyy

String dob = "27-05-1999";
DateFormat originalFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH);
DateFormat targetFormat = new SimpleDateFormat("dd MMMM, yyyy");
Date date = originalFormat.parse(dob);
dob = targetFormat.format(date);

System.out.println(dob);

DEMO

答案 1 :(得分:0)

您的输入是:27-05-1999,您的dateFormat是:yyyy-MM-dd。您实际上使用了错误的日期格式。

此代码可以正常使用。

String dob = "27-05-1999";
DateFormat sourceFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault());
DateFormat destFormat = new SimpleDateFormat("dd MMMM, yyyy", Locale.getDefault());
Date date = sourceFormat.parse(dob);
dob = destFormat.format(date);
System.out.println(dob);  // output : 27 May, 1999

答案 2 :(得分:0)

    DateFormat originalFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
    DateFormat targetFormat = new SimpleDateFormat("dd MM, yyyy");
    Date date = originalFormat.parse("1999-05-27");
    String dob = targetFormat.format(date);

    System.out.println(dob);
  

查看输入格式错误的输入格式。

如果您希望保持相同的输入格式,请使用以下代码

    DateFormat originalFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH);
    DateFormat targetFormat = new SimpleDateFormat("dd MM, yyyy");
    Date date = originalFormat.parse("27-05-1999");
    String dob = targetFormat.format(date);

    System.out.println(dob);
  

两种情况下的输出

27 05,1999

答案 3 :(得分:0)

以下代码应该可以让您了解这里的问题,

问题在于此处的表达式,

//String dob = "1999-05-27";
//DateFormat originalFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);

String dob = "27-05-1999";
DateFormat originalFormat = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH);

DateFormat targetFormat = new SimpleDateFormat("dd MMMM, yyyy");
Date date = originalFormat.parse(dob);
dob = targetFormat.format(date);
System.out.println(dob);

您还可以查看有关java文档的详细表达式信息,以下网址应该可以帮助您:

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html