首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Calendar.getInstance(TimeZone.getTimeZone("UTC"))未返回协调世界时时间

Calendar.getInstance(TimeZone.getTimeZone("UTC"))未返回协调世界时时间
EN

Stack Overflow用户
提问于 2014-01-25 18:41:24
回答 4查看 191.8K关注 0票数 119

我真的对Calendar.getInstance(TimeZone.getTimeZone("UTC"))方法调用得到的结果感到困惑,它返回的是IST时间。

下面是我使用的代码

Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());

我得到的回应是:

Sat Jan 25 15:44:18 IST 2014

因此,我尝试将默认TimeZone更改为UTC,然后进行了检查,结果运行正常

Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());

TimeZone tz  = TimeZone.getDefault() ;
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
Calendar cal_Three = Calendar.getInstance();
System.out.println(cal_Three.getTime());
TimeZone.setDefault(tz);

结果:

Sat Jan 25 16:09:11 IST 2014
Sat Jan 25 10:39:11 UTC 2014

我是不是漏掉了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-25 18:50:00

System.out.println(cal_Two.getTime())调用从getTime()返回一个Date。正在将Date转换为println的字符串,在本例中,该转换将使用默认的IST时区。

您需要显式地使用DateFormat.setTimeZone()在所需的时区中打印Date

编辑:@Laurynas的礼仪,考虑一下:

TimeZone timeZone = TimeZone.getTimeZone("UTC");
Calendar calendar = Calendar.getInstance(timeZone);
SimpleDateFormat simpleDateFormat = 
       new SimpleDateFormat("EE MMM dd HH:mm:ss zzz yyyy", Locale.US);
simpleDateFormat.setTimeZone(timeZone);

System.out.println("Time zone: " + timeZone.getID());
System.out.println("default time zone: " + TimeZone.getDefault().getID());
System.out.println();

System.out.println("UTC:     " + simpleDateFormat.format(calendar.getTime()));
System.out.println("Default: " + calendar.getTime());
票数 161
EN

Stack Overflow用户

发布于 2016-02-11 01:25:11

Calendar currentTime = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
currentTime.set(Calendar.ZONE_OFFSET, TimeZone.getTimeZone("UTC").getRawOffset());
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, currentTime.get(Calendar.HOUR_OF_DAY));
calendar.getTimeInMillis()

是为我工作的

票数 6
EN

Stack Overflow用户

发布于 2020-10-10 18:23:59

这对我来说很有效。

获取时间戳类型:

public static Timestamp getCurrentTimestamp() {
    TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
    final Calendar cal = Calendar.getInstance();
    Date date = cal.getTime();
    Timestamp ts = new Timestamp(date.getTime());
    return ts;
}

获取字符串类型:

    public static String getCurrentTimestamp() {
    TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
    final Calendar cal = Calendar.getInstance();
    Date date = cal.getTime();
    Timestamp ts = new Timestamp(date.getTime());
    return ts.toString();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21349475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档