java - 将字符串转换为 GregorianCalendar

标签 java calendar timezone

我有一个来自电子邮件 header 的字符串,例如 Date: Mon, 27 Oct 2008 08:33:29 -0700。我需要的是 GregorianCalendar 的一个实例,它将代表同一时刻。就这么简单——我该怎么做?

对于最快的 - 这不会正常工作:

SimpleDateFormat format = ... // whatever you want
Date date = format.parse(myString)
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date)

因为它将时区规范化为 UTC(或您的本地机器时间,具体取决于 Java 版本)。我需要的是 calendar.getTimeZone().getRawOffset() 来返回 -7 * milisInAnHour

最佳答案

如果可以的话,我建议您查看 Joda Time 库。当核心平台提供类似功能时,我通常反对使用第三方库,但我将此作为异常(exception),因为 Joda Time 的作者也支持 JSR310,而 Joda Time 基本上最终将被纳入 Java 7。

http://joda-time.sourceforge.net/

所以无论如何,如果 Joda Time 是一个选项,像这样的东西应该工作:

DateTimeFormatter formatter =
    DateTimeFormat.forPattern("your pattern").withOffsetParsed();
DateTime dateTime = formatter.parseDateTime("your input");
GregorianCalendar cal = dateTime.toGregorianCalendar();

希望对您有所帮助。

关于java - 将字符串转换为 GregorianCalendar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/240510/

相关文章:

c# - 安全地将 UTC 日期时间转换为本地时间(基于 TZ)以进行计算?

java - 处理金钱时尾随零

java - 日历日期时区问题

windows - 在 Windows/Outlook 中将时区显示为长日期+时间的一部分

Java:如何在不进行时区转换的情况下将日期保存到MySQL中?

Angular 4 Date-Picker - 如何限制 future 和过去的日子

java - 创建代理计算器

java - 使用 JavaFX 的 WebView NullPointerException

java - 从样本列表中获取项目

iphone - 如何获取 iCloud 的 EKSource?