好的,这是我的编辑日期时间值:
@Html.EditorFor(model => model.TestimonialCreatedOn)
在代码中显示AM时间为正确值:
<input id="TestimonialCreatedOn-visible" name="TestimonialCreatedOn-visible" value="20/02/2018 11:08:06 AM" data-role="datetimepicker" style="width: 100%;" class="k-input valid" role="combobox" aria-expanded="false" aria-disabled="false" aria-readonly="false" type="text">
但对于日期时间选择器,它显示PM:
有没有人知道为什么它没有显示AM也时间错了,它应该显示
晚上11:08而不是晚上9:38
干杯
更新:如果我用它来设置我的模型值
model.TestimonialCreatedOn = DateTime.Now;
然后保存值 我的编辑器在数据库中存储了正确的时区值 虽然日期时间显示的时间不正确,但数据库仍然存在 编辑器。现在,如果我将以下内容设置为utc
model.TestimonialCreatedOn = DateTime.UtcNow;
,则错误的值将存储在数据库中。
所以这是一个例子:
我已将模型值设置为此model.TestimonialCreatedOn = DateTime.UtcNow;
现在我的编辑器显示正确的时间:
但是如果我保存该值,我会在数据库中获得此值:
2018-02-19 22:30:00.000
你可以在这里看到:
所以时区不匹配,无论我使用哪种方法model.TestimonialCreatedOn = DateTime.UtcNow;
或model.TestimonialCreatedOn = DateTime.Now;
答案 0 :(得分:0)
好的,所以@StephenMuecke指出我在正确的轨道上。
最初创建模型时,日期时间值必须使用日期时间utc,如model.TestimonialCreatedOn = DateTime.UtcNow;
然后在保存模型时我需要将时间转换为本地用户时间:
var createdOn = _dateTimeHelper.ConvertToUserTime(DateTime.SpecifyKind((DateTime)model.TestimonialCreatedOn, DateTimeKind.Utc));
日期时间助手_dateTimeHelper
是一种nopcommerce服务,可以在构造函数中初始化,也可以使用EngineContext解析,如下所示:
var _dateTimeHelper = EngineContext.Current.Resolve<IDateTimeHelper>();
希望这有助于他人。谢谢Stephen Muecke
要转换回当地时间,您可以使用:
_dateTimeHelper.ConvertToUtcTime(DateTime.SpecifyKind((DateTime)model.TestimonialCreatedOn, DateTimeKind.Local))