我正在尝试做一些非常简单的事情 - 获取当前日期和时间,并以所需的格式解析它。
private final String datePattern = "yyyy:DDD";
private final String timePattern = "hh:mm:ss";
public void setDateAndTime(){
// Default constructor initializes to current date/time
Date currentDateAndTime = new Date();
SimpleDateFormat dateFormatter = new SimpleDateFormat(datePattern);
SimpleDateFormat timeFormatter = new SimpleDateFormat(timePattern);
try {
this.date = dateFormatter.parse(currentDateAndTime.toString());
this.time = timeFormatter.parse(currentDateAndTime.toString());
} catch (ParseException e){
System.out.println("Internal error - unable to parse date/time");
System.exit(1);
}
}
这会导致异常:
Unparseable date: "Sat Nov 06 11:04:22 EDT 2010"
这是一个完全有效的日期字符串,我用来初始化 SimpleDateFormat 的模式似乎是正确的。
如何避免此错误,以及如何按上述方式初始化 SimpleDateFormat
?
最佳答案
- 解析是从
字符串
获取日期
- 格式化是从
日期
获取字符串
您需要后者 - 所以使用 formatter.format(currentDateAndTime)
您遇到了异常,因为您通过 toString()
将您的 Date
转换为 String
,稍后您尝试解析它,但是不符合您指定的格式。
关于java - 具有模式的 SimpleDateFormat 会导致错误 Unparseable Date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4113620/