日期时间值的编辑器显示不正确的值

Editor for date time value displaying incorrect value

好的,这是我的日期时间值编辑器:

@Html.EditorFor(model => model.TestimonialCreatedOn)

在代码中,上午时间显示为正确值:

<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">

但对于日期时间选择器,它显示下午:

有谁知道为什么它不显示上午而且时间不对,它应该显示

下午 11:08 不是 9:38 下午

干杯

UPDATE: If I use this to set my model value model.TestimonialCreatedOn = DateTime.Now; then save the value from my editor to the data base the correct time zone value is stored in the database although the incorrect time is displayed in the date time editor.

Now if I set the following to utc model.TestimonialCreatedOn = DateTime.UtcNow; the wrong value is stored in database.

所以这是一个例子: 我已将我的模型值设置为此 model.TestimonialCreatedOn = DateTime.UtcNow; 现在我的编辑器显示正确的时间:

但是如果我保存那个值,我会在数据库中得到这个值: 2018-02-19 22:30:00.000 你可以在这里看到:

所以时区不匹配,无论我使用哪种方法model.TestimonialCreatedOn = DateTime.UtcNow;model.TestimonialCreatedOn = DateTime.Now;

好的,@StephenMuecke 在这里为我指出了正确的轨道。

最初创建模型时,日期时间值必须像这样使用 datetime 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))