我有一个托管的Web应用程序,可根据每日工作日数据生成报告。由于服务器位于欧洲(设置为使用UTC时间),我位于亚洲(UTC + 5),而我的老板和同行位于美国(UTC-5),我们似乎遇到了相同日期的问题。 / p>
例如,我身边的报告显示“2012年7月23日”,而在美国则显示“2012年7月22日”。我使用RDP检查了服务器,它也显示了“2012年7月23日”。
我的应用中没有本地化。我不确定这是ASP.NET,客户端JavaScript还是MySql根据请求的来源更改日期?有什么想法吗?
修改
刚与我的老板核实过,浏览器中的来源也显示“2012-07-23”。所以我想这会缩小到JavaScript,改变调用new Date("2012-07-23")
时的日期。
答案 0 :(得分:0)
如果您使用ISO Datetime,请确保在末尾指定时区,否则将其计为当地时间。
如果可能,在使用数据库和ASP.NET应用程序时,请将UTC时间用于所有内容。
GETUTCDATE()
DateTime.UTCNow()
如果您指定使用日期,请尽可能使用ISO日期来减少文化不变性。
答案 1 :(得分:0)
我认为你可以归咎于你的JavaScript代码。像new Date("2012-07-23")
一样使用带有字符串的Date
constructor调用Date.parse
,如果没有指定,则使用本地时区。
使用自纪元以来的ISO时间戳或毫秒。
当然,显示还有另一个角色。当您输出utc时间,解析为本地时区,作为本地时间时,它将显示utc“正确”。如果输出utc-parsed utc-string作为本地时间,它将正确显示本地时间。