首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java -不考虑服务器获取一致的UTC值

Java -不考虑服务器获取一致的UTC值
EN

Stack Overflow用户
提问于 2013-08-25 02:11:17
回答 2查看 512关注 0票数 0

我的工作是一个版本的产品,将使用在印度的用户和工作从印度(GMT+5:30)。我们的服务器在美国。有开始日期和结束日期(例如-从8月01,00:00:00到8月31 11:59:59,它必须是活动的)的一些方案将被应用。我正在使用http://www.ruddwire.com/handy-code/date-to-millisecond-calculators/,因为我使用了这段代码,假设getTime具有一致的UTC时间-

代码语言:javascript
运行
复制
// dateStr is what user enters on UI like 1/08/2013 format = dd/MM/yyyy
public static long getUTCDateWithFormat(String dateStr, String format) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    Date date = sdf.parse(dateStr);
    return date.getTime();
}

因此,考虑到启动时间,当我从本地主机运行时,在8月1日,我得到了结果= 1375295400000,这意味着清华01年8月01日00:00:00 GMT+0530 (印度标准时间)。(因此,我知道UTC需要减去5小时30分钟的毫秒,因为在运行时,我必须将系统时间与此值进行比较。)

预期在从服务器(美国)运行时会保存类似的UTC,但它保存了1375336800000,这意味着清华8月1日11:30 GMT+0530 (印度标准时间),所以UTC的时间是不同的,除了5:30小时的缺陷外,还有11:30小时的缺陷。

没有在服务器上使用以下代码,但我希望得到类似的结果-

代码语言:javascript
运行
复制
Calendar calendar = Calendar.getInstance();
String[] arr = dateStr.split("/");
calendar.set(new Integer(arr[2]), new Integer(arr[0]), new Integer(
        arr[1]));
return calendar.getTime();

请帮我解决这个问题。而且,在运行时进行比较时,我必须使用新的Date(),那么应该如何呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-25 15:40:21

问题是您希望同时在服务器和客户端上看到当前时间(以UTC毫秒为单位)吗?如果是这种情况,调用System.currentTimeMillis()应该返回相同的值(在美国和印度,如果同时调用)。

如果不是这样的话,您可能希望将一个时区传递到GregorianCalendar中,如下所示:

代码语言:javascript
运行
复制
GregorianCalendar cal1 = new GregorianCalendar(TimeZone.getTimeZone("US/Pacific"))

如果问题持续存在的话,也许你可以详细说明一下?

票数 0
EN

Stack Overflow用户

发布于 2013-08-25 03:10:01

java.util.Date有许多问题,应该避免。相反,您应该使用java.util.Calendar,并可能使用特定的日历java.util.GregorianCalendar。日历在一致性方面表现得更好,并且不依赖于操作系统的功能/细节。

所以,开始使用公历

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

https://stackoverflow.com/questions/18424996

复制
相关文章

相似问题

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