Java和SOAP数据客户端作为UTC时间请求并保存为EST时间

Java and SOAP data client request as UTC time and save as EST time

我有一个SOAP客户机请求,需要将日期响应转换为EST时间。

在我的屏幕上,我选择了上午11:45,我想在数据库中保存上午11:45。

但是SOAP请求的形式是:

2012年11月24日16:45:00.000Z

在Java代码中,日期打印为:

2012年11月24日星期六11:45:00美国东部时间…

然而,我们进行了另一个Web服务调用,该调用最终保存到数据库(SQL Server)中:2012年11月24日16:45

1
2
3
4
Calendar incomingWebServiceCalendarObject = fromWebService.getDateTime()

Calendar outgoingWebServiceCalendarObject = incomingWebServiceCalendarObject;
webServiceBean.setDateTime(outgoingWebServiceCalendarObject);

…如何保存为2012-11-24 11:45?

此外,这是公历:

Java.U.FieldScRealDeal[Trime],AdLeFieldStSt= true,Apple FieldStase= Tral. ZONEFION[ID="美国/NeXYYOK",偏移量=18000000,dStayLe= true,过渡=235,Lastrue= Java.UTI.SimuleMeTeal[ID]=美国/NeXyYyk,偏移=-18000000,DSTealSt==3600000,UsDayAyLoe= true,StistyValue= 0,StistModE=3,startmonth=2,startda天=8,startdayOfWeek=1,starttime=7200000,starttimemode=0,endmode=3,endmon月=10,endda天=1,enddayOfWew=1,endtime=7200000,endtimemode=0]],FirstDayOfWew=1,最小DayInFirstWew=1,ERA=1,年=2012,月=10,周u年=47,周u月=4,月日_月日=24,日_年日=329,周日_周日=7,日_周日=7,周日_,周日_日_日=7,日_日_日,周日_日=7,日_日_日__week_in_month=4,am_pm=0,hour=11,hour_of_day=11,minute=45,second=0,millisecond=0,zone_offset=-18000000,dst_offset=0]

我做了下面的工作,这看起来是可行的,这是一个合适的方法吗,代码根据我的需求试图完成什么?

1
2
3
4
final long offset = this.secondaryScheduleTime.getTimeInMillis() + TimeZone.getTimeZone("EST").getRawOffset();
final Date estTime = new Date(offset);
final Calendar c2 = Calendar.getInstance();
c2.setTime(estTime);


您的初始SOAP请求以UTC(.000Z是您的时区信息)的形式传入,之后,您的日历对象将其转换为东部时间,zone=sun.util.calendar.ZoneInfo[id="America/New_York"...进行显示,然后您将原始SOAP信息保存到数据库中。

您不显示的是如何持久化数据库以及使用哪个时间戳。

我只能想到两种情况:

  • 您的数据库仅采用UTC格式,不保存时区信息。这意味着每次从数据库调用都是UTC,时区由代码决定。
  • 您的数据库通过timestamp数据类型保存时区信息,但您正在将来自SOAP请求的UTC信息发送到数据库,而不是本地日历对象。
  • 我认为您提供的解决方案满足上述列表中的2,但同样,在没有看到任何其他细节的情况下,我认为很难确定。

    我建议删除一些断点,并单步执行代码,以查看创建日期对象的确切时间/位置,以及使用什么信息。