0

这更像是一个知识库而不是一个问题。最近我遇到了一个有趣的问题,并提供了一个解决方案。想分享。

环境: .NET 3.5、ASP.NET Web forms Application using javascript、RadControls

问题:我们在新西兰的客户在使用 RadDatePicker 保存日期时在保存时将日期减 1。

调查:我发现这只发生在客户端机器(浏览器机器)上的夏令时设置为新西兰的时区,因为有一些聪明的代码,否则它会发生在所有 + 时区。

原因: RadControl GetDate() 方法正在返回带有时间偏移的日期时间,即。2013 年 15 月 10 日 00:00:00 UTC +13。因此,当 javascript 通过 AJAX 将日期时间传递给处理程序方法时,.NET 方法正在减去 UTC 偏移量(在这种情况下为 +13)。因此,日期减 1。到目前为止,它一直对我们隐藏,因为一个聪明的代码将时间增加了 12 小时。因此,当服务器从 UTC 增加或减少最多 12 小时时,日期保持不变。但现在对于具有夏令时的新西兰来说,它是 +13 小时。

解决方法:暂时我们从增加 12 小时增加到 13 小时(不是那么聪明)。我们不能使用 .NET 的 ToLocalTime() 方法,因为它会给服务器时间。其他可能的解决方案可能是仅将日期从 javascript 发送到 .NET 方法。还考虑使用 DateTimeOffset 类而不是 .NET 的 DateTime 类。

4

0 回答 0