簡體   English   中英

如何將日期時間格式從C#正確傳遞到數據庫?

[英]How to pass datetime format from c# to database correctly?

我的模型中有一個Datetime變量

    [Required]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd HH:mm:ss}")]
    public DateTime Deadline { get; set; }

並嘗試使用bootstrap3 datetimepicker在視圖中選擇日期和時間,然后將其保存到數據庫。

控制器正在此處輸入圖像描述

現在一切正常,只是它保存在數據庫中的日期不是我在視圖中選擇的日期。

例如,我在視圖中選擇10/09/2017 1:58 AM。 如您所見,月份是10月,日期是9日。

Datetimepicker屏幕截圖

但是提交后,我在數據庫中得到的值是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>

我花了幾個小時,但仍然無法找出問題背后的原因。 請幫助我,在此先感謝您的任何建議。

好的,最后我仍然不知道將值從視圖傳遞到數據庫時會發生什么。

但是我確實發現,我用於“截止日期”字段的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"} })

現在,它可以完成我期望的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM