3

我在字符串中获取时间,例如“2011-02-27T10:03:33.099-06:00”,它属于 xml dateTime 类型。我也有 TimeZone 类型的时区。我应该如何在该时区将 dateTime 转换为 GregorianCalendar java 类型。

4

3 回答 3

2
sdf = new java.text.SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss.S");

解析除尾随 TZ 之外的所有内容。

sdf.parse (sd);
res168: java.util.Date = Sun Feb 27 10:03:33 CET 2011

api 文档中,我希望

sdf = new java.text.SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss.SSSz");

用于读取最后的-06:00。但我看到,要么有一个 0700 形式的偏移量,要么有一个 GMT 前缀,例如“GMT-04:00”。所以你必须自己插入那个 GMT-thingy:

sdf.parse (sd.replaceAll ("(......)$", "GMT$1"))

SDF.parse(str) 返回一个 Date,它必须被转换成一个 GC:

GregorianCalendar calendar = new GregorianCalendar ();
calendar.setTime (date);
于 2012-05-29T15:16:51.623 回答
2

Java 内置了解析 xml 日期时间的代码:使用DatatypeConverter.parseDateTime()。这将在解析的 TimeZone 中返回一个日历。然后,您可以将 Calendar TimeZone 设置为所需的目标 TimeZone,以执行您接下来需要执行的任何操作。

于 2012-05-29T15:59:55.373 回答
2
于 2018-02-15T07:09:42.030 回答