2017-09-22 51 views
0

我有一個DateTimeOffset(因爲.NET沒有Date類)應該存儲日期(沒有時間)的實體。實體框架,日期和UTC

問題是,當我將日期設置爲例如數據庫中的「2017-9-1」時,它被保存爲「2017-08-31 22:00:00 + 00」(少於2小時)

我認爲它適用於我的時區偏移到UTC。

我想存儲想存儲「2017-9-1」在數據庫中。我認爲的第一件事是爲每個DateTimeOffet添加2個小時,但它感覺虛假。

有更好的方式來處理日期比這個嗎?

+0

您究竟如何將日期設置爲「2017-9-1」? –

+0

使用[DateTimeOffset.Date](https://msdn.microsoft.com/en-us/library/system.datetimeoffset.date(v = vs.110).aspx)屬性。 –

回答

0

我不太確定,但在格式字符串的日期前添加「0:」,我認爲應該把它放到當前時間,否則它將默認爲UTC。

像這樣:

[DisplayFormat(DataFormatString = "{0:yyyy/dd/MM}")] 
+0

這是關於只顯示,對不對?我想在數據庫中存儲確切的日期。 – SuperJMN

+0

我不這麼認爲,它將我當前的時間存儲在我的數據庫中。有一個分貝問題自己的ATM,所以我無法確定,但我認爲它也適用於數據庫。 – Will

0

如果使用的是MS SQL,則可以使用日期變量只存儲日期。您可以註釋實體DateTimeOffset屬性數據庫類型。

[Column(TypeName="date")] 
+0

我正在使用Postgre SQL。它適用於它嗎? – SuperJMN

+0

我相信它... https://www.postgresql.org/docs/9.1/static/datatype-datetime.html – MrFitchet