我的模型中有日期时间的变量
[Required]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd HH:mm:ss}")]
public DateTime Deadline { get; set; }
并尝试使用bootstrap3 datetimepicker在视图中选择日期和时间,然后将其保存到数据库中。
控制器是 enter image description here
现在一切正常,除了它在数据库中保存的日期不是我在视图中选择的日期。
例如,我在视图中选择10/09/2017 1:58 AM。如您所见,月份是10月,第9天。
但在我提交后,我在数据库中获得的价值是2017-09-10 01:58:00。当我尝试使用此值与当前日期时间进行比较时,我发现了这一点 。
月份变为9,白天变为10。
脚本看起来像
<script type="text/javascript">
$(function () {
$('#Deadline').datetimepicker({ minDate: moment(), format: format: 'yyyy-mm-dd hh:ii:ss' });
});
</script>
我花了几个小时但仍然无法找出这个问题背后的原因。请帮助我,并提前感谢您的任何建议或建议。
答案 0 :(得分:0)
好的,最后我还是不知道将值从视图传递到数据库时会发生什么。
但是我确实发现我用于Deadline字段的HtmlHelper是 EditorFor(),它将此字段呈现为 datetime 类型。因此,无论我在数据注释或javascript中指定的格式如何,它始终在该文本框中显示MM / dd / yyyy hh:mm AM(/ PM),并错误地将值保存到数据库中。
现在,我将@type =“text”添加到EditorFor()中,以便将其呈现为类型文本。或者使用TextBoxFor()而不是EditorFor()。
现在看起来像:
@Html.EditorFor(model => model.Deadline, new { htmlAttributes = new { @type = "text", @class = "form-control"} })
现在它做了我期望它做的事。