在将具有 00:00 时间的 javascript 中的日期传递给使用 linq to sql 访问数据库的 web 服务时,在某些客户端浏览器上,保存后,传递给数据库中 datetime 列的日期现在的时间不再是 00:00,在某些情况下是午夜前几个小时,因此日期会移到前几天的日期,其他时候是几个小时前。
我们如何始终保存日期而不是数据库的时间?
这是使用 asp.net webforms 和 c# 和 asmx webservices 并且大多数查询都已编译。
在将具有 00:00 时间的 javascript 中的日期传递给使用 linq to sql 访问数据库的 web 服务时,在某些客户端浏览器上,保存后,传递给数据库中 datetime 列的日期现在的时间不再是 00:00,在某些情况下是午夜前几个小时,因此日期会移到前几天的日期,其他时候是几个小时前。
我们如何始终保存日期而不是数据库的时间?
这是使用 asp.net webforms 和 c# 和 asmx webservices 并且大多数查询都已编译。
这取决于日期如何编码的细节。但是,在高层次上,您必须:
另请参见此处: Linq to SQL DateTime values are local (Kind=Unspecified) - How do I make it UTC?
我猜客户端上的日期和时间很重要。在这种情况下,如何在将日期时间信息发送到服务器之前将其转换为 iso 格式,并同时发送客户端的时区偏移量。
var d = new Date
d.toISOString() // 2012-05-05T22:14:35.506Z
// or maybe jus
d.getTime() // milliseconds since jan 1st 1970 or thereabouts
d.getTimezoneOffset() // Timezone offset in minutes from UTC
通过这种方式,您可以获得 UTC 日期和时间以及时区偏移量,即 UCT 时间与本地时间相差多少分钟。例如,挪威将有一个负偏移(UTC-挪威时间 = 负)。