将本地时间转换为 UTC,反之亦然

新手上路,请多包涵

我正在开发 Android 应用程序,我想将本地时间(设备时间)转换为 UTC 并将其保存在数据库中。从数据库中检索它后,我必须再次转换它并显示在设备的时区中。谁能建议如何在 Java 中执行此操作?

原文由 Mew 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 404
2 个回答

我使用这两种方法将当地时间转换为 GMT/UTC,反之亦然,这对我来说没有任何问题。

 public static Date localToGMT() {
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date gmt = new Date(sdf.format(date));
    return gmt;
}

将要转换为设备本地时间的 GMT/UTC 日期传递给此方法:

 public static Date gmttoLocalDate(Date date) {

    String timeZone = Calendar.getInstance().getTimeZone().getID();
    Date local = new Date(date.getTime() + TimeZone.getTimeZone(timeZone).getOffset(date.getTime()));
    return local
}

原文由 Mew 发布,翻译遵循 CC BY-SA 3.0 许可协议

已接受答案的简化和浓缩版本:

 public static Date dateFromUTC(Date date){
    return new Date(date.getTime() + Calendar.getInstance().getTimeZone().getOffset(new Date().getTime()));
}

public static Date dateToUTC(Date date){
    return new Date(date.getTime() - Calendar.getInstance().getTimeZone().getOffset(date.getTime()));
}

原文由 Chris Stillwell 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题