我正在尝试从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数据时间?
发布评论