Java 带有模式的SimpleDataFormat会导致错误无法解析日期
我正在尝试做一些非常简单的事情——获取当前的日期和时间,并以所需的格式解析它Java 带有模式的SimpleDataFormat会导致错误无法解析日期,java,datetime,Java,Datetime,我正在尝试做一些非常简单的事情——获取当前的日期和时间,并以所需的格式解析它 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 =
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);
}
}
这将导致一个例外:
无法解析的日期:“2010年11月6日星期六11:04:22美国东部夏令时”
这是一个完全有效的日期字符串,我用来初始化SimpleDataFormat的模式似乎是正确的
如何避免此错误,以及如何像上面那样初始化SimpleDateFormat
?- 解析是从
字符串
- 格式化是从日期获取字符串
formatter.format(currentDateAndTime)
您将获得异常,因为您通过toString()
将日期
转换为字符串
,稍后您将尝试解析该字符串,但该字符串不遵循您指定的格式。- 解析是从
字符串
- 格式化是从日期获取字符串
formatter.format(currentDateAndTime)
您将获得异常,因为您通过toString()
将Date
转换为String
,稍后您将尝试解析该字符串,但该字符串不遵循您指定的格式。您的代码应该是
SimpleDataFormat dateFormatter=新的SimpleDataFormat(datePattern);
SimpleDataFormat timeFormatter=新的SimpleDataFormat(timePattern);
System.out.println(dateFormatter.format(currentDateAndTime));
简单地说,除非输出为字符串,否则无法格式化日期对象
SimpleDataFormat dateFormatter=新的SimpleDataFormat(datePattern);
SimpleDataFormat timeFormatter=新的SimpleDataFormat(timePattern);
System.out.println(dateFormatter.format(currentDateAndTime));
简单地说,除非输出是与问题无关的字符串,否则无法格式化日期对象:这是调用
System.exit()
的错误位置。您不想只抛出
异常或从方法返回
吗?与问题无关:这是调用System.exit()
的错误位置。您不想只从方法中抛出
异常还是返回
?