如何将 YYYY-MM-DDTHH:mm:ss.SSSZ 格式的时间转换为默认时区?

发布于 2024-11-28 23:52:16 字数 86 浏览 0 评论 0原文

我得到的时间格式为“2011-07-31T08:16:37.733Z”。实际上Z应该是时区,然后将该时间转换为本地时区。我现在如何实际将此时间转换为默认时区。

The time that I am getting is in the format "2011-07-31T08:16:37.733Z". Actually the Z should be the timezone and then that time is converted to local timezone. How do I actually convert this time to default timezone now.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情释 2024-12-05 23:52:16

RFC 3339 描述了日期/时间表示的特定 ISO 8601“配置文件”。

如果可以选择使用第 3 方开源库,请查看 Joda-Time 的 ISODateTimeFormat 实用程序类。

否则,如果您需要推出自己的代码,由于 ISO 8601/RFC 3339 表示时区信息的方式,仅使用 SimpleDateFormat 是不够的。

如果您需要解析的所有内容都在“Z”(Zulu 或 UTC)中,那么它相对简单:

String input = "2011-08-11T01:23:45.678Z";
TimeZone utc = TimeZone.getTimeZone("UTC");
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
f.setTimeZone(utc);
GregorianCalendar cal = new GregorianCalendar(utc);
cal.setTime(f.parse(input));
System.out.println(cal.getTime());

应该在您当地的时区打印出“2011-08-11T01:23:45.678Z”。

如果您需要处理 RFC 3339 中的任意时区,那么您需要扩展上述内容来解析时区指示符并检索相应的 Java TimeZone 实例。如果只是整个小时 +/- GMT,那么这应该不会太难,但如果是非标准偏移,您可能必须创建自己的 SimpleTimeZone 实例。

RFC 3339 describes a specific ISO 8601 'profile' for date/time representation.

If using 3rd-party open-source libraries is an option, take a look at Joda-Time's ISODateTimeFormat utility class.

Otherwise, if you need to roll out your own code it's not enough to use a SimpleDateFormat because of the way ISO 8601/RFC 3339 represents timezone information.

If all you need to parse is in 'Z' (Zulu or UTC), then it's relatively simple:

String input = "2011-08-11T01:23:45.678Z";
TimeZone utc = TimeZone.getTimeZone("UTC");
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
f.setTimeZone(utc);
GregorianCalendar cal = new GregorianCalendar(utc);
cal.setTime(f.parse(input));
System.out.println(cal.getTime());

Should print out "2011-08-11T01:23:45.678Z" in your local time zone.

If you need to handle arbitrary timezones in RFC 3339 then you'll need to extend the above to parse out the timezone designator and retrieve the corresponding Java TimeZone instance. That shouldn't be too hard if it's just whole hours +/- GMT, but in case of non-standard offsets you may have to create your own SimpleTimeZone instance.

大海や 2024-12-05 23:52:16
private static SimpleDateFormat DATE_TIME_FORMAT=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

DATE_TIME_FORMAT.setTimeZone(TimeZone.getID()); //for example
date=DATE_TIME_FORMAT.format(curDate);
private static SimpleDateFormat DATE_TIME_FORMAT=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

DATE_TIME_FORMAT.setTimeZone(TimeZone.getID()); //for example
date=DATE_TIME_FORMAT.format(curDate);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文