【问题标题】:DateFomat give unparsable date error?日期格式给出无法解析的日期错误?
【发布时间】:2013-11-14 22:15:23
【问题描述】:

如果我有一个字符串日期:

2013-11-14T00:00:00.000

我可以使用什么日期格式来创建带有偏移的日期?

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");
dateFormat.setTimeZone(TimeZone.getDefault());
Date date = dateFormat.parse(myDate);

上面给出了一个无法解析的日期错误。

【问题讨论】:

  • 尝试从格式中删除Z

标签: java date date-format


【解决方案1】:
"yyyy-MM-dd'T'HH:mm:ss.SSS"

使用SSS 表示毫秒并删除Z,因为日期字符串没有时区。

如果您打算以另一种格式(例如,使用自定义时区)打印/记录日期,则必须使用 DateFormat 的另一个实例:

"yyyy-MM-dd'T'HH:mm:ss.SSS"  // to parse the date string
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" // to format the date object

【讨论】:

  • 我如何获得偏移值作为long的解析日期?
  • 你能举个例子吗?
  • 如果我解析了日期String,它给了我一个Date 对象,如果我得到毫秒,它给出了一个很长的日期表示。但这不包括偏移量。我需要 Date 作为偏移量。
  • 我不确定我是否理解你的意思。 Date 对象表示相对于纪元的毫秒数 (January 1, 1970, 00:00:00 GMT)。它没有关于时区的任何信息。但是,您可以格式化日期对象以查看它在特定时区(和格式)中的外观。
【解决方案2】:

末尾的.000 不是时区名称;它看起来像毫秒。尝试将 Z 时区名称替换为 SSS for milliseconds

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");

【讨论】:

  • 抱歉,打错了,日期格式是yyyy-MM-dd'T'HH:mm:ss.SSS Z。
  • 好的,但是您仍然需要删除Z
  • 但我想要偏移量。
  • 您给出的字符串值中没有指定偏移量。
【解决方案3】:

您提供的 2013-11-14T00:00:00.000 未使用上述模式指定:"yyyy-MM-dd'T'HH:mm:ss.SSS Z" 作为此模式的示例有效输入将是:

2013-11-14T00:00:00.000 -0700

要么删除Z,要么传递一个字符串作为上述示例。

【讨论】:

    【解决方案4】:

    仅供参考,这是使用Joda-Time 2.3 的同类代码。

    Joda-Time 默认使用这种ISO 8601 格式。不需要格式化程序来解析该字符串。只需将字符串传递给 DateTime 构造函数。构造函数会自动调用内置的 ISO 格式化程序。

    String input = "2013-11-14T00:00:00.000";
    
    // Specify a time zone rather than rely on default.
    DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
    DateTime dateTime = new DateTime( input, timeZone );
    
    System.out.println( "dateTime: " + dateTime );
    

    运行时……

    dateTime: 2013-11-14T00:00:00.000+01:00
    

    如果您需要 java.util.Date 与其他类一起使用,请从 Joda-Time 转换。

    java.util.Date date = dateTime.toDate();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 2019-09-13
      • 1970-01-01
      • 2018-06-18
      相关资源
      最近更新 更多