2017-10-07 76 views
1

日期時間的變量在我的模型如何正確地將c#中的datetime格式傳遞給數據庫?

[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在視圖中。正如你所看到的,這個月是十月,那一天是第九。

Datetimepicker screenshot

但我提交後,我在數據庫得到的值是2017年9月10日1點58分○○秒。當我嘗試使用此值與當前日期時間進行比較時,我發現此 Debugger screenshot

月份達到9和天成爲10

腳本看起來像

<script type="text/javascript"> 
$(function() { 
    $('#Deadline').datetimepicker({ minDate: moment(), format: format: 'yyyy-mm-dd hh:ii:ss' }); 
}); 
</script> 

我花了幾個小時,但仍然無法找到發生了什麼事情對這個問題的背後。請提前幫助我,並提前謝謝您的任何建議或建議。

+0

您的文本和選取器視圖不匹配。請再次閱讀您的問題。文化在這裏也可能很重要,但目前尚不清楚。 –

+0

日期如何傳遞給數據庫?因爲這是真正相關的部分。 –

+0

的確 - 您尚未顯示任何與數據庫相關的代碼。你確定問題出在那個部分,而不是從瀏覽器到服務器的日期? –

回答

0

好吧,最後我還是不知道將視圖傳遞給數據庫時會發生什麼。

但是我發現我用於截止日期字段的HtmlHelper是EditorFor(),並且它呈現該字段爲類型日期時間。所以無論我在數據註釋或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"} }) 

現在做什麼,我希望它做的事。

相關問題