我有一个字符串日期" 31-Dec"和模式" dd-MMM"。和下一个代码
DateFormat formatter = new SimpleDateFormat(pattern);
formatter.setTimeZone(timeZone);
formatter.parse(input);
生成异常
java.text.ParseException: Unparseable date: "31-Dec"
at java.text.DateFormat.parse(DateFormat.java:337)....
我做错了什么?
谢谢!
答案 0 :(得分:5)
一个问题可能是您的Locale
不是英语。试试这个:
DateFormat formatter = new SimpleDateFormat("dd-MMM", Locale.ENGLISH);
try {
System.out.println(formatter.parse("31-Dec"));
} catch (ParseException e) {
e.printStackTrace();
}
这对我来说是:
Thu Dec 31 00:00:00 CET 1970
由于您在日期字符串中缺少一年,因此您会看到它会自动插入1970
年份。
答案 1 :(得分:1)
我写了一个可以在我的机器上运行的简单示例。试一试你的问题,它可以帮助你找出问题所在。
public class Example {
public static void main(String[] args) {
String data = "31-Dec";
String pattern = "dd-MMMM";
DateFormat formatter = new SimpleDateFormat(pattern);
formatter.setTimeZone(TimeZone.getDefault());
try {
Date date = formatter.parse(data);
System.out.println(date.getDate());
System.out.println(date.getMonth());
} catch (ParseException e) {
e.printStackTrace();
}
}
}
答案 2 :(得分:0)
我认为,您的输入字符串(表示日期)不符合模式中描述的格式。
答案 3 :(得分:0)
试试这个---
String pattern = "dd-MMM";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
dateFormat.setTimeZone(TimeZone.getDefault());
String input = "31-Dec";
try
{
dateFormat.parse(input);
Calendar cal = dateFormat.getCalendar();
System.out.println("Day "+cal.get(Calendar.DAY_OF_MONTH));
System.out.println("MONTH "+ cal.get(Calendar.MONTH));
}catch(Exception e)
{
}