如何使用Java解析RFC 3339数据时间?

编程入门 行业动态 更新时间:2024-10-27 10:20:42
本文介绍了如何使用Java解析RFC 3339数据时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试从HTML5 datetime 输入字段中解析作为值返回的日期。在Opera中试试看一个例子。返回的日期如下所示: 2011-05-03T11:58:01Z 。

I'm trying to parse the date returned as a value from the HTML5 datetime input field. Try it in Opera to see an example. The date returned looks like this: 2011-05-03T11:58:01Z.

我想解析成Java日期或日历对象。

I'd like to parse that into a Java Date or Calendar Object.

理想情况下,解决方案应该具有以下几点:

Ideally a solution should have the following things:

  • 没有外部库(jars)
  • 处理所有可接受的RFC 3339格式
  • 字符串应该能够轻松验证看看它是否是一个有效的RFC 3339日期
推荐答案

原则上这将完成使用不同的 SimpleDateFormat 模式。

So, in principle this would be done using different SimpleDateFormat patterns.

这里列出了 RFC 3339中的个人声明:

  • date-fullyear: yyyy
  • date-month: MM
  • date-mday: dd
  • time-hour: HH
  • <分钟: mm
  • time-second: ss
  • time-secfrac: .SSS ( S 表示毫秒,但是 - 不清楚如果这些数字多于或少于3位数,则会发生。)
  • time-numoffset :(像 +02:00 似乎不支持 - 而是支持格式 +0200 , GMT + 02:00 和某些命名时区使用 z 和 Z 。)
  • time-offset:'Z'(不支持其他时区) - 您应该使用 format.setTimezone(TimeZone.getTimeZone(UTC))使用这个。)
  • 部分时间: HH:mm:ss 或 HH:mm:ss。 SSS 。
  • 全职: HH:mm:ss'Z'或 HH:mm:ss.SSS'Z'。
  • 全日期: yyyy-MM-dd
  • 日期时间: yyyy-MM-dd'THH:mm:ss'Z'或 yyyy-MM-dd'T'HH:mm:ss。 SSS'Z'
  • date-fullyear: yyyy
  • date-month: MM
  • date-mday: dd
  • time-hour: HH
  • time -minute: mm
  • time-second: ss
  • time-secfrac: .SSS (S means millisecond, though - it is not clear what would happen if there are more or less than 3 digits of these.)
  • time-numoffset: (like +02:00 seems to be not supported - instead it supports the formats +0200, GMT+02:00 and some named time zones using z and Z.)
  • time-offset: 'Z' (not supporting other time zones) - you should use format.setTimezone(TimeZone.getTimeZone("UTC")) before using this.)
  • partial-time: HH:mm:ss or HH:mm:ss.SSS.
  • full-time: HH:mm:ss'Z' or HH:mm:ss.SSS'Z'.
  • full-date: yyyy-MM-dd
  • date-time: yyyy-MM-dd'T'HH:mm:ss'Z' or yyyy-MM-dd'T'HH:mm:ss.SSS'Z'

我们可以看到,这似乎无法解析一切。也许从头开始实现一个 RFC3339DateFormat 是一个更好的方法(使用正则表达式,为了简单起见,或手工解析,以提高效率)。

As we can see, this seems not to be able to parse everything. Maybe it would be a better idea to implement an RFC3339DateFormat from scratch (using regular expressions, for simplicity, or parsing by hand, for efficiency).

更多推荐

如何使用Java解析RFC 3339数据时间?

本文发布于:2023-11-03 16:53:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1555614.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何使用   时间   数据   RFC   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!