【问题标题】:TimeZone Issue while Rendering in MVC在 MVC 中渲染时出现时区问题
【发布时间】:2019-05-24 16:16:03
【问题描述】:

我正在处理一个保存客户提交日期值的需求。它工作完美。但问题是,当我获取与客户相关的数据并将其呈现在 UI 中时,提交日期显示错误。假设如果我将其保存为 01/01/2019,它会显示为 12/31/2018 11:56PM。仅当我更改时区时才会发生这种情况。在我当地的时区,它完美无缺。但是,当我将其更改为其他时区时,它会显示为上述或基于时区的其他值。

我正在使用 Asp.Net MVC、C#.Net。我调试了应用程序并检查了从数据库返回的日期是否完美,即 01/01/2019 12:00AM。但是当它被渲染时,它显示的值不正确。

这是我用来将值呈现到 UI 的代码。我只包含了这段代码,因为我得到的模型是好的。该问题似乎在渲染时发生。有人可以帮我解决我哪里出错了,或者我可以对上面的代码做些什么来解决这个问题?

<div class="form-group margin-top-10">
    @ProjectHolder.LayoutHForm(new { @class = "v-split-4" }, null,
    x => x.mdl.FullName,
    x => x.mdl.SRNumber,
    x => x.mdl.DateOfSubmission,
    x => x.mdl.IsMale,
    x => x.mdl.EmailAddress)                    
</div>

【问题讨论】:

    标签: c# .net asp.net-mvc datetime datetimeoffset


    【解决方案1】:

    浏览器根据其对时区的理解来显示时间。因此,它将您的日期转换为浏览器检测到的时区。 首先,确保您以 UTC 格式存储时间。现在,当您显示您的时间时,不仅仅是呈现原始时间,而是使用日期格式字符串或可用方法进行转换。那应该根据时区显示准确的时间。 您可以使用 ToShortDateString 或 DateValue.ToString("dd-mm-yyyy") 之类的方法或任何适合您情况的格式字符串。

    【讨论】:

    • 要转换为客户端的日期时间,您需要知道客户端所在的时区才能使用 C# 进行转换。如果时区数据不可用/正在存储,那么您可以存储为 UTC(如上所述)并使用 javascript 转换为本地时间并显示。 stackoverflow.com/questions/13622142/…
    • 是的,说得对。如果必须在 C# 中完成,则需要从客户端发送文化信息。另一种选择是使用浏览器脚本在客户端执行此操作。
    猜你喜欢
    • 2011-05-26
    • 2019-09-03
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    相关资源
    最近更新 更多