【问题标题】:Converting to localtime at client with c#使用 C# 在客户端转换为本地时间
【发布时间】:2017-11-22 16:04:59
【问题描述】:

我有一个以 UTC 格式存储记录的数据库。 c# .NET 应用程序读取数据并在服务器端填充 *.cshtml 表。服务器不知道客户端的时区,因为它不是浏览器报告的参数,并且没有登录或用户表单供用户输入配置文件并声明其时区。结果是在浏览器中以 UTC 显示的表格。 我知道,如果该值在 javascript 变量中,那么让浏览器进行时区偏移调整是微不足道的。但是,数据以一组 TD 标签的形式到达浏览器,中间有文本。

我能想到的将其转换为本地时间的任何解决方案都是不优雅的 - 使用 javascript 遍历表格,获取 innerHTML,解析它,调整它,然后放回它。这感觉像是一个糟糕的解决方案。有没有更好的办法?将数据作为 JSON 对象传递并通过 javascript 动态创建表?再次感觉笨拙。有没有更简单的方法让浏览器获取 TD> 标签之间的值并进行调整,比如

<TD> onsomething="this.innerHTML=adjustTime("2017-06-17 09:00:00");> </TD>

还是更好的方法?

【问题讨论】:

  • 我会选择 JSON / AJAX 解决方案,在返回数据时动态创建表。您可以在请求中传递浏览器的时区偏移量。得到它就像var d = new Date() var offset = d.getTimezoneOffset(); 一样简单
  • 您还可以让 JavaScript 设置一个查询参数,说明当前偏移量是多少,并使用它来呈现本地时间。
  • 感谢 Tim/Phuzi - 如果我获得了 JAX/JSON 路由,那么我认为我不需要将浏览器的偏移量传递给服务器,我可以在本地应用它。我希望可能有一个明显简单的方法,但怀疑你是对的最好的方法。

标签: javascript c# localtime


【解决方案1】:

处理不同区域时间的一般规则是以 UTC 存储和传输值,然后允许“视图”在适当的时候显示它,即在用户当前时区中。

我会添加一个提供 UTC 时间列表的 API,然后允许 javascript 客户端根据需要呈现和显示它们

【讨论】:

    猜你喜欢
    • 2012-10-24
    • 2023-04-04
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多