当前位置: 首页 > 知识库问答 >
问题:

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

牟波
2023-03-14

我正在开发Android应用程序,我想将本地时间(设备时间)转换为UTC,并将其保存在数据库中。从数据库中检索后,我必须再次将其转换并显示在设备的时区中。有人能建议如何在Java中做到这一点吗?

共有3个答案

李宜然
2023-03-14

尝试以下操作://将UTC转换为本地格式

 public Date getUTCToLocalDate(String date) {
            Date inputDate = new Date();
            if (date != null && !date.isEmpty()) {
                @SuppressLint("SimpleDateFormat") SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
                simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
                try {
                    inputDate = simpleDateFormat.parse(date);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            return inputDate;
        }  

//将本地日期转换为UTC

public String getLocalToUTCDate(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
    Date time = calendar.getTime();
    @SuppressLint("SimpleDateFormat") SimpleDateFormat outputFmt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    outputFmt.setTimeZone(TimeZone.getTimeZone("UTC"));
    return outputFmt.format(time);
}
段干庆
2023-03-14

公认答案的简化和浓缩版本:

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()));
}
阎涵忍
2023-03-14

我使用这两种方法将当地时间转换为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
}
 类似资料:
  • 问题内容: 我正在使用Android应用程序,并且要将本地时间(设备时间)转换为UTC并将其保存在数据库中。从数据库中检索它之后,我必须再次将其转换并显示在设备的时区中。谁能建议如何用Java做到这一点? 问题答案: 我使用这两种方法将本地时间转换为GMT / UTC,反之亦然,这对我来说没有任何问题。 将要转换为设备本地时间的GMT / UTC日期传递给此方法:

  • 问题内容: 我想将服务器UTC时间转换为本地时间,反之亦然。这是我的代码。 我知道当地时间 o / p:“下午12:52” 但是实际的本地时间和输出时间相差23分钟。 问题答案: 我不知道您的代码有什么问题。 但是看起来有太多不必要的事情,就像您要设置日历,从字符串中获取某些元素一样。这是我的UTCToLocal和localToUTC函数的小版本。 但是为此,您需要以特定格式传递字符串。原因我已强

  • 我正在开发Android应用程序,我想将用户选择的本地时间(设备时间)转换为UTC秒。之后,我必须再次转换并显示在设备的时区中。有人能建议在科特林如何做到这一点吗?

  • 问题内容: 作为json的回应,我正在获取UTC时区。我需要将其转换为当地时间。 有人可以帮忙吗? 问题答案: 编辑(2017年1月2日):请参阅@Jason的答案,它比这更好,因为它使用自定义过滤器修复日期格式-这是更Angular的方法。 我的原始答案和修改内容: 您可以使用过滤器格式化日期: 这将输出: (假设) 请参阅angularjs.org中的此文档。它有很多示例,非常有帮助! 编辑:

  • 我是PostgreSQL的新手,我想知道是否有一种直接的方法可以使用函数将表中的时间戳值转换为不同的时区。在我的情况下,是UTC到EST。 例如,我需要将这些值转换为EST(不仅仅是一个值,而是表中的所有值)

  • 我尝试了convert_timezone('CET',current_timestamp)函数,但它在AWS Athena中不被识别 在更简单的工作中,我在Presto中寻找SQL Server函数GETUTCDATE()的替代品,只是希望获得CET时间戳。有什么建议吗?