首页 > Java > java教程 > 正文

如何在 Java 中将任何时区的时间戳转换为 GMT?

DDD
发布: 2024-11-12 08:19:02
原创
468 人浏览过

How to Convert a Timestamp From Any TimeZone to GMT in Java?

如何使用 Java 处理日历时区

问题:

您有一个时间戳您的应用程序可能源自任何时区。但是,数据必须发送到假定数据始终为 GMT 的 WebService。您需要在用户不知情的情况下将用户的输入时间从本地时区转换为 GMT。

答案:

Java 的时区处理可能会令人困惑。虽然时间戳通常以 GMT 格式存储,但 Calendar 类默认使用系统当前的时区。要解决此挑战,请考虑以下事项:

import java.util.Calendar;
import java.util.TimeZone;

public class ConvertTimeZone {

    public static void main(String[] args) {
        // Example input time (EST)
        Calendar input = Calendar.getInstance(TimeZone.getTimeZone("EST"));
        input.set(2008, Calendar.MAY, 1, 18, 12, 0);

        // Create a Calendar in GMT
        Calendar gmt = convertToGmt(input);

        // Output the converted time (GMT)
        System.out.println(gmt.getTime()); // 2008-05-01 11:12:00 GMT
    }

    public static Calendar convertToGmt(Calendar cal) {
        Date date = cal.getTime();
        TimeZone tz = cal.getTimeZone();

        long msFromEpochGmt = date.getTime(); // Convert to milliseconds since epoch in GMT
        int offsetFromUTC = tz.getOffset(msFromEpochGmt);

        // Create a new Calendar in GMT and adjust for the offset
        Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
        gmtCal.setTime(date);
        gmtCal.add(Calendar.MILLISECOND, offsetFromUTC);

        return gmtCal;
    }
}
登录后复制

此代码执行以下步骤:

  1. 获取用户本地时区中的当前时间作为日历对象。
  2. 以 GMT 格式创建新的 Calendar 对象。
  3. 计算用户本地时区与 GMT 之间的偏移量。
  4. 通过将偏移量添加到用户时间来调整 GMT 日历。
  5. 生成的 Calendar 对象现在表示 GMT 中的同一时间,无论用户的时区如何。

通过利用此方法,您可以准确地将用户的输入时间从任何时区转换为 GMT,确保与 WebService 的数据兼容性。

以上是如何在 Java 中将任何时区的时间戳转换为 GMT?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板