我有一个使用gSOAP的soap服务器。其中一个请求在响应中包含xsd:dateTime
字段。此dateTime
始终以UTC格式返回,但我希望在本地时间返回dateTime
。我用当地时间time_t
填充该字段,但随后将其转换为xsd:dateTime
,gsoap会自动将其转换为UTC。我可以改变这种行为吗?
在this link中,听起来像gsoap将始终使用UTC(" A time_t
值被视为并由序列化器以UTC表示。")。我也已经搜索了here标志,但我找不到用例的标志。
答案 0 :(得分:0)
在内部soap_dateTime2s
函数(as found here)的实现中,它似乎测试了几个配置标志(在config.h
中可设置)。
我还没有经过测试,但似乎要按照当地时间输出,HAVE_GMTIME_R
和HAVE_GMTIME
需要定义。
答案 1 :(得分:0)
要使用本地时间而非格林尼治标准时间,请在./configure
之后更改config.h
,如下所示:
/* Define to 1 if you have the `gmtime' function. */
//#define HAVE_GMTIME 1
#undef HAVE_GMTIME
/* Define to 1 if you have the `gmtime_r' function. */
//#define HAVE_GMTIME_R 1
#undef HAVE_GMTIME_R
然后使用gsoap
,现在soap_dateTime2s
将返回本地时间。
喜欢
2017-10-24T02:28:41Z将返回为2017-10-24T10:28:41 + 08:00
答案 2 :(得分:-1)
似乎我想拥有的并不那么容易。我假设我需要为xsd:dateTime
编写自己的自定义序列化程序,类似于this link中的示例。
但是,如果某人有更好的解决方案或有关如何编写此类序列化程序的任何建议,请告诉我您的想法。