【问题标题】:How to convert UTC to PST in java [duplicate]如何在java中将UTC转换为PST [重复]
【发布时间】:2012-04-01 08:05:54
【问题描述】:

我正在尝试在 java 中将时区从 UTC 转换为 GMT。我已经尝试了几次,甚至也使用了您的指导方法。我正在以 GMT 格式获得正确时间的输出,但连同用它编写的“PDT 2012”。为什么这样..??我已经尝试了数百种方法,但无法摆脱它。

请帮帮我。

谢谢

【问题讨论】:

  • 我怀疑你尝试过“数百种方法”。在任何情况下,请注意 PDT 在夏令时是 PST,并发布迄今为止的“最佳代码”(使用的类型)以及实际和期望的结果。
  • 格林威治标准时间还是太平洋标准时间?您的问题不清楚,并且您没有显示任何代码。一般来说,我强烈建议您使用 Joda Time,但除此之外,很难回答这样一个模糊的问题。请阅读tinyurl.com/so-hints

标签: java utc gmt


【解决方案1】:

对于Java中所有与日期/或日期时间相关的操作,我建议使用JodaTime Library

使用具有不同观点(日历、时区)的日期/时间以及用于计算非常有用:添加/减去月、年、日等等...

从 Java 8 开始,在 JDK 中的新包 java.time (JSR-310) 下包含了 JodaTime 的等效(改进),不再需要将其添加为依赖项。 JodaTime 的作者在他的blog 中解释了 JodaTime 和 JSR-310 之间的区别。

【讨论】:

  • 不,Joda-Time 包含在 JDK 中。 Joda-Time 项目启发了 JSR 310 项目,该项目导致java.time 类内置于Java 8 和信函中。 Joda-Time 和 JSR 310 都共享主要概念,因为它们都是由同一个人 Stephen Colebourne 领导的。但是 java.time not 与 Joda-Time 相同,并且 not 复制粘贴代码兼容。
  • 感谢您的评论,因此我编辑了我的答案。和许多人一样,我认为 JodaTime 只是移植到 JDK 中,但我发现博客链接也很有用。
【解决方案2】:

也许以下将是一个起点。它将您的当前日期转换为 GMT:

    SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
    Calendar cal = Calendar.getInstance();
    System.out.println(cal.getTime());
    TimeZone currentTimeZone = cal.getTimeZone();
    int offset = currentTimeZone.getOffset(cal.getTimeInMillis());
    Date adjustedTime = new Date(cal.getTimeInMillis() - offset);
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println(dateFormat.format(adjustedTime));

几点说明:

  • 您可能看不到 PST 更改为 UTC,因为您没有在日期格式上设置时区
  • 您不应该再使用“GMT”之类的缩写。最好在 id 字段中使用全名。
  • 如果您碰巧在默认时间已设置为 GMT 的系统上运行上述代码,您将不得不更有创意。

【讨论】:

猜你喜欢
  • 2021-05-28
  • 2011-08-29
  • 2021-11-10
  • 1970-01-01
  • 2014-05-29
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
相关资源
最近更新 更多