Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有模式的SimpleDataFormat会导致错误无法解析日期_Java_Datetime - Fatal编程技术网

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()
的错误位置。您不想只从方法中
抛出
异常还是
返回