日期未正确格式化为Java

问题描述:

我试图将格式“yyyy-MM-dd”格式的格式设置为“dd MM,yyyy”,但对于某些日期,我获得不正确的年份。日期未正确格式化为Java

这里是我的代码:

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
OUTPUT:10月19日0032

正如你可以看到输入的日期是输出日期不同。我无法理解如何做到这一点。

+4

你输入模式似乎是“dd-MM-yyyy” –

+0

我很困惑为什么你认为今年是第一个输入 –

+1

你还没有切换到较新的Java日期和时间类呢?什么阻止你回来?我推荐他们。我甚至认为他们会给你一个异常信息,提示你的尝试有什么问题(总是一件好事)。 –

你的模式是错误的。你输入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

你输入的是:27-05-1999,你的日期格式为: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 

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

的下面的代码应该给你一些想法这里有什么问题,

问题是在这里表达,

//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文档的详细表达式的信息,下列URL应该帮你:

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