首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的Date.getTime()在不同的服务器返回不同的时间

Java中的Date.getTime()在不同的服务器返回不同的时间
EN

Stack Overflow用户
提问于 2017-11-16 13:48:44
回答 4查看 3K关注 0票数 1

我需要计算一个基于日期的值。因此,我首先使用date format类解析日期,然后使用getTime()获取毫秒数。用这些毫秒,我会计算出一些值。但是getTime()在不同的服务器上返回不同的值。我们在印度开发,在那里我得到了正确的值,但在美国服务器上我得到了不同的值。

场景:

代码语言:javascript
复制
public class Test {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");

        String now = "11/03/2018";

        Date UsualDateformat = sdf.parse(now);

        System.out.println(UsualDateformat.getTime());
    }
}

上面是一个示例代码,但我的实际代码是一个drl文件(drools)中的规则。此程序返回"1541183400000“,我转换为日期是”星期六2018年11月3日00:00:00“。但在美国服务器im得到"1541217600000”等于日期“星期六2018年11月3日09:30:00”。因此,当我使用这个值时,我会遇到边际小数点格式问题。如何解决这个问题?

提前感谢!

EN

回答 4

Stack Overflow用户

发布于 2017-11-16 13:54:33

您需要在SimpleDateFormat上设置时区,以便在不同地域的服务器上保持一致。例如:

代码语言:javascript
复制
public class Test {

    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
        sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
        ....
    }

}
票数 3
EN

Stack Overflow用户

发布于 2017-11-16 13:52:46

你会得到这些不同的值,因为你在美国和印度的服务器之间的时差是9小时30。

这与浮点无关,而与时区有关。

解决此问题的一种方法是始终在同一时区内工作(例如印度)

票数 2
EN

Stack Overflow用户

发布于 2017-11-16 15:10:34

这段代码可能对你有用,

代码语言:javascript
复制
public static String getGmtTime(String timezone) {
    return ZonedDateTime
            .now()
            .withZoneSameInstant(ZoneId.of(timezone))
            .toLocalDateTime()
            .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}

timezone作为America/Los_Angeles传递以获取具有适当时区的时间,可以在here中找到时区

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

https://stackoverflow.com/questions/47322507

复制
相关文章

相似问题

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