【问题标题】:Calendar set date causing exception with message "Unparsable date" [duplicate]日历设置日期导致异常,消息“无法解析的日期”[重复]
【发布时间】:2018-04-15 17:03:28
【问题描述】:

我的代码从字符串“2018-04-14'T'15:38:14”中获取日历日期, 当我调用setTime 时,它当前导致异常。代码

    Calendar cal = Calendar.getInstance();
    // format of date yyyy-MM-dd'T'HH:mm:ss
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd 'T' 
    cal.setTime(sdf.parse("2018-04-14'T'15:38:14"));// all done1 

上面的行导致一个异常说“不可解析的日期”

【问题讨论】:

  • 这不能编译。您的问题似乎缺少一些代码
  • 我建议您避免使用 SimpleDateFormat 类。它不仅过时了,而且出了名的麻烦。今天我们在java.time, the modern Java date and time API 的表现要好得多。
  • 堆栈跟踪,好吗?它会告诉你异常不是来自setTime,而是来自parse
  • 别告诉我你需要解析的字符串中有撇号?肯定是2018-04-14T15:38:14,而不是2018-04-14'T'15:38:14??

标签: java simpledateformat datetime-parsing java.util.calendar unparseable


【解决方案1】:

'T' 是一个常数。注意细微的差别。格式用单引号中的 T 定义,但是当您传递值时,它没有。

Calendar cal = Calendar.getInstance();
// format of date yyyy-MM-dd'T'HH:mm:ss
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
cal.setTime(sdf.parse("2018-04-14T15:38:14"));// all done1

【讨论】:

  • 并且您删除了 OP 格式中的一些空格可能也会导致问题
猜你喜欢
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多