gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:54:55 25 4
gpt4 key购买 nike

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

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

但是 SOAP 请求是这样的:

2012-11-24T16:45:00.000Z

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

2012 年 11 月 24 日星期六 11:45:00 EST...

然而我们进行了另一个网络服务调用,最终保存到数据库(SQL Server):2012-11-24 16:45

Calendar incomingWebServiceCalendarObject = fromWebService.getDateTime()

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

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

此外,这是公历:

java.util.GregorianCalendar[time=1353775500000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/New_York",offset=-18000000,dstSavings= 3600000,useDaylight=true,transitions=235,lastRule=java.util.SimpleTimeZone[id=America/New_York,offset=-18000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay =8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA =1,YEAR=2012,MONTH=10,WEEK_OF_YEAR=47,WEEK_OF_MONTH=4,DAY_OF_MONTH=24,DAY_OF_YEAR=329,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE ,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-18000000,DST_OFFSET=0]

...

我执行了以下操作,这似乎有效,这是一种正确的方法吗,根据我的要求,代码试图完成什么?

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 信息保存到数据库中。

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

我能想到的只有两种情况:

  1. 您的数据库仅采用 UTC,未保存任何时区信息。这意味着对您的数据库的每次调用始终是 UTC,时区由您的代码决定。
  2. 您的数据库通过 Timestamp 数据类型保存时区信息,但您将 SOAP 请求中的 UTC 信息发送到数据库,而不是本地日历对象。

我认为您提供的解决方案满足上面列表中的第 2 项,但同样,在没有看到任何其他细节的情况下,我认为很难确定。

我建议删除一些断点并单步执行您的代码,以准确查看创建日期对象的时间/位置,以及包含哪些信息。

关于Java 和 SOAP 数据客户端请求为 UTC 时间并保存为 EST 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13482207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com