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

2022-09-01 07:11:52

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


答案 1

我使用这两种方法将本地时间转换为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
}

答案 2

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

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()));
}

推荐