首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将CDT时间转换为我的本地时间

问将CDT时间转换为我的本地时间
EN

Stack Overflow用户
提问于 2015-11-23 18:45:12
回答 1查看 446关注 0票数 0

我在理解UnixTimestamp独立于时区的概念时遇到了麻烦。有人告诉我,如果我将CDT时间戳转换为Unix,然后根据我的本地时区显示它,它就会工作。因此,我编写了一个函数,如下所示,它返回一个unix时间戳:

代码语言:javascript
复制
public static long convertToUnixTSInMillisec(String yyyymmddFormat, String timeZone) { //GMT-5 is Timezone for CDT
    long unixTS = 0;
    DateFormat dfm = new SimpleDateFormat("yyyyMMddHHmm");

    dfm.setTimeZone(TimeZone.getTimeZone(timeZone));//Specify your timezone
    try {
        unixTS = dfm.parse(yyyymmddFormat).getTime();
    } catch (ParseException e) {
        e.printStackTrace();
    }

    return unixTS;
}

但是,当我使用不同的时区调用上面的函数时,它返回不同的Unix时间戳,这不是我所期望的。我期待着相同的时间戳和Java函数来处理它。

代码语言:javascript
复制
System.out.println(convertToUnixTSInMillisec("201511231500",  TimeZone.getDefault().getID()));
System.out.println(convertToUnixTSInMillisec("201511231500", "GMT-5"));
System.out.println(convertToUnixTSInMillisec("201511231500", "GMT"));

为什么会发生这种情况?如果我想把时间转换成CDT-->Unix-->Local,我是不是应该先转换成GMT,然后再转换成Unix?CDT-->GMT-->Unix-->Local。或者Java函数会按照传递的时区来处理它。

另外,有人能用这种正确的方式指出代码吗?我有一个时间在yyyyMMddHHmm格式的CDT,我想得到unix的时间戳?

EN

回答 1

Stack Overflow用户

发布于 2015-11-23 19:57:24

您的程序显示的是下午3点的Unix时间戳。但是3pm的意思因时区不同而不同。您已经提供了三个不同的时区,因此您将获得三个不同的时间戳。在格林尼治时间下午3点和纽约上午10点是同一时间,所以

代码语言:javascript
复制
"201511231000", "GMT-5" and
"201511231500", "GMT"

确实会给出相同的时间戳。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33869114

复制
相关文章

相似问题

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