java - 具有模式的 SimpleDateFormat 会导致错误 Unparseable Date

标签 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 = 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/

相关文章:

Linux系统时区更改后Linux上的Mysql时区更改

javascript - Atom编辑器:用于插入时间戳的代码段

ms-access - Access 数据转换问题

java - 用户重新定位 float 操作按钮

java 检查Skypename是否存在

MySQL 查询中的 PHP 日期变量

php - 持续时间之间的差异

java - 创建帐户(对象)时输出错误

Java:在循环中替换字符串时出现问题

java - 如何将 .jar 依赖项包含到最终的 .aar 库文件中? (安卓工作室1.5)