在服务器端java类中读取客户端时区

2023-12-27

我有一个客户端程序,它将时间发送到服务器端程序。
我正在使用 Callendar 对象将时间值从客户端传递到服务器。
我的客户端程序位于斯里兰卡,服务器位于英国。
当我在客户端发送时间(例如:2011-11-21T12:43:41.352 + 05:30)时,通常会在服务器上转换为英国时间(例如:2011-11-21T07:13:411.352) +00:00)。
我想要做的是我想要获取我在客户端程序中发送的时间以及客户端程序中的时区。(简单来说,我想读取服务器中的时间,而不将时区转换应用于该时间是由客户端程序发送的。所以在服务器中我想获取时间为 2011-11-21T12:43:41.352+05:30 而不是 2011-11-21T07:13:411.352+00:00)。

我能知道这可以用java来做吗?如果可以的话怎么做?

客户端 :

Calendar cal1 = Calendar.getInstance();
Date indate = new Date(); // this shows as 2011-11-21T12:43:41.352+05:30
searchDateRange_type0.setStart(cal1);
cal1.setTime(inDate); 

服务器端 :

SearchDateRange_type0 serachDaterange= criterion_type.getSearchDateRange();
checkInDate     = serachDaterange.getStart().getTime(); //I read this as 2011-11-21T07:13:411.352+00:00

重要的是要理解Date值不have一个时区。它仅代表时间的一个瞬间。你打电话时Date.toString(),它使用您调用它的系统的默认时区。这就是为什么你会出现这样的行为。

所以看起来瞬间本身被正确读取 - 但如果你对local时间而不是instant及时,有两种选择:

  • 传递时区标识符(例如“欧洲/巴黎”)as well就像时间的一瞬间
  • Pass just本地日期或日期/时间,首先不要尝试将其视为时间瞬间

很难确切地知道其中哪一个最适合您的情况。我们需要更多地了解应用程序正在做什么,以及如何传输信息。

I would推荐使用乔达时间 http://joda-time.sf.net不过,它不是内置的日期/时间库 - 它是一个更好的 API,可以帮助您区分当地时间和即时时间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在服务器端java类中读取客户端时区 的相关文章

随机推荐