从SOAP the服务中,日期字段以字符串的形式返回:
2010-12-21T08:55:17E-7+01:00.NET在解析时遇到了问题。Jax在这方面没有问题。E-7是什么意思。在java服务器中,我能做些什么来标准化它。
编辑:我有一个java服务器,它充当多个服务器的转换,带有错误的时间戳。一旦它被jax解析了,我能做什么来规范化它呢?.normalise()会给我一个我不确定我想要的UTC。
发布于 2010-12-23 19:02:03
在ISO8601 time you always处理Z= Zulu for UTC,但也有其他军事时区(不是标准的一部分):
http://www.navycs.com/militarytime.html
E代表Echo,表示UTC + 5时区。
不过,我对-7和+01:00部分没有解释。
编辑:更新了帖子,以明确Z是ISO 8601次唯一允许的符号。
发布于 2010-12-23 19:02:53
对之前的误读深表歉意。我可以确认.NET不能解析它,如下所示:
using System;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
class Test
{
static void Main()
{
string x = "2010-12-21T08:55:17E-7+01:00";
DateTime dt = SoapDateTime.Parse(x);
Console.WriteLine(dt);
}
}老实说,它看起来像是一个糟糕的SOAP服务。查看关于SOAP的各种文档,SOAP日期/时间值看起来应该是ISO8601格式的xsd:dateTime值-我在Wikipedia ISO 8601 page中看不到任何允许这样做的内容。当然,维基百科有可能是不准确的,但更有可能的是SOAP服务中的一个bug,IMO。
我建议你看一下服务的头文件,看看它是否给出了关于底层平台的提示……然后查找针对该平台报告的产生无效日期/时间值的错误。
https://stackoverflow.com/questions/4518081
复制相似问题