Jos*_*Bui 6 .net datetime soap
我在一些WSDL中有这个:
<element name="startDate" type="xsd:dateTime"/>
<element name="endDate" type="xsd:dateTime"/>
Run Code Online (Sandbox Code Playgroud)
这导致SOAP信封中的以下文本:
<startDate>2008-10-29T12:01:05</endDate>
<endDate>2008-10-29T12:38:59.65625-04:00</endDate>
Run Code Online (Sandbox Code Playgroud)
只有一些时间具有毫秒和区域偏移.这让我头疼,因为我试图在这个例子中获得37分54秒的范围,但由于偏移我最终得到了4小时37分54.65625秒.这是DateTime中的某种舍入错误吗?我该如何防止这种情况发生?
我怀疑您的 endDate 值将 Kind 属性设置为 DateTimeKind.Local。
您可以将其更改为 DateTimeKind.Unspecified,如下所示:
endDate = DateTime.SpecifyKind(endDate, DateTimeKind.Unspecified)
Run Code Online (Sandbox Code Playgroud)
之后我相信它将在没有时区偏移的情况下被序列化。
请注意,如果您已使用 DateTime.Now 或 DateTime.Today 对其进行初始化,则您将获得带有 DateTimeKind.Local 的 DateTime,如果您已使用 Datetime.UtcNow 对其进行初始化,则将获得 DateTimeKind.Utc。