我正在从Excel中查询(.net)Web服务(从反弹中获取),它返回一组日期。我注意到当天边界上的任何日期都向前移动了1小时,我检查了服务器上的Web服务并且原始日期是正确的。
然后我使用Fiddler在客户端计算机上查看呼叫,并且午夜的日期在结尾处有一个Z(将其标记为UTC),而所有其他日期时间则没有。
UPDATE上面的陈述是错误的,它是用Z标记的第一个和最后一个日期,时间是什么并不重要。其余的是正确的,客户只调整第一个和最后一个日期
我认为SOAP然后将其从UTC更改为本地(BST),因此增加了一小时。
我的问题是如何阻止Z被添加到这些日期(或将其更改为本地日期)?
我已经检查了IIS 7.5中的文化,并将其设置为en-GB,服务器设置为英国。
答案 0 :(得分:1)
这有点繁琐,这不是一个真正的答案,但应该给你一些尝试。
一种方法可能是删除偏移量。我没有代码,但在类似psudeo的代码中可能是
TimeZone tz = GlobalizationNamespace.GetTimeZone("Greenwich Mean Time");
SomeDateTimeNoOffset = SomeDateTime.AddHours(tz.GetUtcOffset(SomeDateTime));
这可能会阻止服务将Z放在最后,因为它没有TimeZone偏移量。
另一个选择是将服务合同中的属性公开为字符串
public string DateTimeNoTzInfo
{
get { DateTime.ToString('yyyy-MM-ddThh:mm:ss.ttttt') }
}