gpt4 book ai didi

java - SOAP 服务中的时区不匹配

转载 作者:行者123 更新时间:2023-12-02 04:36:53 25 4
gpt4 key购买 nike

我的 SOAP 服务部署在具有 PDT 时区的服务器上。我正在从我的 java (adf) 代码调用该服务。该服务有一个强制参数,该参数以日期时间作为参数。这就是我所说的方法 -

           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(startDate);
GregorianCalendar c = new GregorianCalendar();
c.setTime(date);
sdate = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);

SOAP 服务应该将此日期时间存储在数据库中,该数据库也在 PDT 时区的同一服务器中。现在,如果我尝试从其他时区使用此服务,它会将其转换为 PDT,然后存储在数据库中。

我希望该服务将相同的时间存储在我提供的数据库中,而不是转换它。任何想法,如何忽略时区。

最佳答案

我建议在数据库中存储具有相同(隐式)时区的所有日期时间。两个常见的约定是使用本地时间或祖鲁时间 (UTC+0)。决定此约定后,您可以存储所有日期时间,而无需显式添加时区信息。 (Postgress 甚至为此有一个单独的设置)。

因此,您必须在存储之前将所有传入的日期时间转换为数据库的隐式时区。有多种模式可以实现此目的,例如您在 ORM 框架中注册的过滤器或日期时间处理程序。

从服务返回日期时间时,常见约定是使用 Zulu 时间(附加“Z”)或 UTC(附加时区偏移量,例如“+02:00”)。

当直接返回到用户客户端(例如浏览器或应用程序)时,还可以选择本地化客户端的日期时间。这意味着客户端必须提供其时区,例如在 header 字段中、作为用户配置文件的一部分或在登录时(并存储在 HTTP session 中)。然后,您的组件(例如 MVC 应用程序中的 Controller )必须将此时区应用于数据库中的日期时间,然后再将其添加到响应中。

关于java - SOAP 服务中的时区不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30638456/

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