c# - 在 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>
解决方案
浏览器根据其对时区的理解来显示时间。因此,它将您的日期转换为浏览器检测到的时区。首先,确保您以 UTC 格式存储时间。现在,当您显示您的时间时,不仅仅是呈现原始时间,而是使用日期格式字符串或可用方法进行转换。那应该根据时区显示准确的时间。您可以使用 ToShortDateString 或 DateValue.ToString("dd-mm-yyyy") 之类的方法或任何适合您情况的格式字符串。
推荐阅读
- python - 查找第一个值并返回列表中的第二个值
- python - 打印 python ceasar cypher 时的间距问题
- queue - ServiceBusTrigger 在连续网络作业上使用 ReceiveDelete
- java - 将 kotlin 项目从 pom.xml 转换为 build.gradle
- python - 如何对数据进行分类以获得树状结构
- python - 在我写的一篇文章上运行 QA,我不知道为什么最后一个 if 语句不会返回任何东西
- sql - 根据条件和相同的主键将一个表中的金额带入另一个表
- windows - Windows 批处理脚本、快捷方式和其他非实时 cmd 方法真的需要双与号 (&&) 吗?
- mysql - 如何使用 msum 仅对 DolphinDB 中的正数求和
- tensorflow - 图像分类迁移学习需要负样本吗?