Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 如何将RFC 3339日期字符串解析为ZonedDateTime?_Java_Date_Datetime_Parsing_Rfc3339 - Fatal编程技术网

Java 如何将RFC 3339日期字符串解析为ZonedDateTime?

Java 如何将RFC 3339日期字符串解析为ZonedDateTime?,java,date,datetime,parsing,rfc3339,Java,Date,Datetime,Parsing,Rfc3339,问题: 我应该解析一个日期字符串。它适用于以下情况: 比方说,我将修复一个未知的本地偏移量约定问题,只是不接受这些日期。 但我仍然有一个问题,像这样的一些角落案件: 这代表了1990年底插入的闰秒 1990-12-31T15:59:60-08:00 这表示太平洋标准时间的相同闰秒,8 比UTC晚几个小时。“1990-12-31T15:59:60-08:00” 问题: 如何解析它以避免丢失任何秒数 更新: 是否存在任何适合的分区DateTime替代方案 RFC3339 java.tim

问题:

我应该解析一个日期字符串。它适用于以下情况:

比方说,我将修复一个未知的本地偏移量约定问题,只是不接受这些日期。 但我仍然有一个问题,像这样的一些角落案件:

这代表了1990年底插入的闰秒

  1990-12-31T15:59:60-08:00
这表示太平洋标准时间的相同闰秒,8
比UTC晚几个小时。“1990-12-31T15:59:60-08:00”

问题:

  • 如何解析它以避免丢失任何秒数
更新:

  • 是否存在任何适合的分区DateTime替代方案 RFC3339

java.time不提供任何直接支持。就在今天早些时候,我还写了一节关于分析闰秒的内容。但所说的就是一切

所以还有一只手。我将尝试以下方法:使用正则表达式检测第二个是否为60。如果是:将其替换为59。作语法分析转换为UTC。如果UTC中的时间是23:59:59,则假设原始字符串中存在有效的闰秒;否则,字符串不表示有效时间

我建议在闰秒的情况下,最高达60.99999999的值是有效的。因此,要检测是否有60秒,您需要查看分钟后冒号后面的内容(如果有),而不是取决于是否有小数部分。

您所说的“避免损失任何秒”到底是什么意思?我认为java.time不支持闰秒,例如
ZoneDateTime。getSeconds()
被记录为返回0-59(包括0-59)范围内的值。您是否愿意在1991年初返回UTC午夜?
  1990-12-31T23:59:60Z
  1990-12-31T15:59:60-08:00