【问题标题】:Force DateTime to show exactly what stored in the database regardless of timezone强制 DateTime 准确显示数据库中存储的内容,而不考虑时区
【发布时间】:2017-08-29 00:56:46
【问题描述】:

我们在一个表中有一个 DateTime 列,我们在其中存储从 UI 的下拉列表中选择的日期

我们使用默认的 DateTime.Unspecified 保存它

所以在数据库中它是这样存储的

现在的问题是我们想在客户端按原样显示,这意味着无论时区如何都按原样显示这个日期时间

所以目前我们所做的只是从数据库中获取日期时间值并修剪 00:00:00,但不知何故,我们遇到了它在不同时区的客户端中显示不同的问题,例如在 -2 时区,它显示落后一天。

知道我们应该如何处理这个问题吗?将数据库列更改为 datatimeoffset 不是一个选项。我们只是想强制它按原样显示。

【问题讨论】:

    标签: c# asp.net .net date datetime


    【解决方案1】:

    DateTime 类具有一些可以调整显示的属性,例如:

    DateTimeKind.Utc
    

    DateTime d =  DateRetreived.ToUniversalTime()
    

    在您的情况下,我认为您只需在将日期发送到显示器之前将其设置为 UTC 格式。

    看到这个问题:

    How can I format DateTime to web UTC format?

    文档:

    https://msdn.microsoft.com/en-us/library/system.datetime.specifykind(v=vs.110).aspx

    【讨论】:

    • 已经保存了 DateTimeKind.Unspecified 的现有记录呢?如何按原样检索它?
    • 类似DateTime varDisplayed = new DateTime( OC.DateCompleted, DateTime.Utc); ... OC 是您的数据库对象吗?
    • 另外,您想在将它们发送到网页之前在后端 C# 代码中更改它们,还是在将它们发送到 Web 前端之后寻找更多代码,例如 html 和 javascript?
    猜你喜欢
    • 2012-05-21
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 2016-01-21
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    相关资源
    最近更新 更多