C#显示客户端本地时间而不是数据库中的UTC时间

时间:2016-02-02 11:08:10

标签: c# json datetime utc

我正在使用asp.net c#。当用户执行操作时,我使用UTC时间在数据库中保存操作日期时间。现在,当它提交动作的时候,我将使用db中的日期时间向客户端发送json。现在的问题是它存在于utc时间,这对用户来说确实很混乱。 我的问题的可选解决方案是什么?它们应该基于客户端还是基于服务器?

3 个答案:

答案 0 :(得分:1)

我在这里回答了这个问题:

How to get current user timezone in c#

基本上,在您的数据库中,您应该以UTC格式存储时间。然后,您需要让您的JavaScript调用您的WCF Web服务,并将其传递给用户的本地时区。

您的服务可以将此时区偏移量添加到UTC时间,并返回用户当地时间的日期时间。

答案 1 :(得分:1)

我认为最正确的方法是继续以与现在相同的方式将数据发送到客户端(以UTC格式),然后您可以在演示期间将其转换为本地或任何其他时区,但如果有的话,继续在计算中使用UTC。

关于如何在javascript中执行此操作有多个问题,例如: here

  

追加' UTC'将字符串转换为日期之前的字符串   的javascript:

     

var date = new Date(' 6/29/2011 4:52:48 PM UTC');

     

date.toString()//   " Wed Jun 29 2011 09:52:48 GMT-0700(PDT)"

P.S。不确定你可以在js中做各种时区,但至少它应该与本地时区一起使用

答案 2 :(得分:0)

根据客户端的时区将UTC时间转换为本地时间。如果这是在服务器端或客户端完成的,那就是设计,逻辑/表示层分离。

如果您选择在服务器端执行此操作,则需要客户端本地时区的信息。鉴于此,你可以写:

TimeZoneInfo.ConvertTimeFromUtc(utcdate, clients_timezoneinfo)

除了c#部分,客户端浏览器的时区偏移有很好的覆盖范围,例如get client time zone from browser