首页 > 解决方案 > 在 MVC 中渲染时出现时区问题

问题描述

我正在处理一个要求,我将保存客户的提交日期值。它工作完美。但问题是,当我获取与客户相关的数据并将其呈现在 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#.netasp.net-mvcdatetimedatetimeoffset

解决方案


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


推荐阅读