我喜歡將當前用戶的當前DateTime.Now
保存爲UTC。對於任何用戶而言,時間是相對於彼此的?我使用此代碼片段來實現實體框架的UTC: Entity Framework DateTime and UTCASP.NET MVC處理時區實體框架
查看數據庫後,日期的列未發生更改。
09.05.2014 20:21:24
我需要在客戶端顯示相對於每個用戶的日期。所以當用戶在美國創建他的賬戶時14:00
我喜歡在歐洲看到20:00
。
我喜歡將當前用戶的當前DateTime.Now
保存爲UTC。對於任何用戶而言,時間是相對於彼此的?我使用此代碼片段來實現實體框架的UTC: Entity Framework DateTime and UTCASP.NET MVC處理時區實體框架
查看數據庫後,日期的列未發生更改。
09.05.2014 20:21:24
我需要在客戶端顯示相對於每個用戶的日期。所以當用戶在美國創建他的賬戶時14:00
我喜歡在歐洲看到20:00
。
首先您需要使用DateTime.UtcNow
而不是DateTime.Now
。英孚將保存日期,它不會做任何事情。
對於數據庫,它只是一個日期,無論是UTC還是特定時區,數據庫都不知道。只有當我們從數據庫中檢索日期時,在顯示給本地用戶之前,我們應該調用ToLocalTime或客戶端UI庫中的類似方法將UTC轉換爲本地時間。 ToLocalTime假定輸入實際上是UTC。
如果您從客戶端保存日期,例如在JavaScript中使用AJAX post,JavaScript日期應該被序列化爲UTC。
請記住,服務器不知道您發送日期的位置,服務器無法將任何日期轉換爲UTC,另一方面,客戶端已完全瞭解設置了哪個國家和哪個時區,並且可以輕鬆地將本地時間轉換爲世界標準時間。
在DateTime對象上調用.ToLocalTime()
會將其轉換爲當地時間。您應該始終將日期保存爲UTC,然後在顯示時進行轉換。
爲什麼我看到字符串像數據庫中的09.05.2014 20:21:24。它已經是UTC了嗎?我不這麼認爲。所以DateTimeKind屬性不工作。 –
你是如何設置DateTime的? '.ToUniversalTime()' –
獲取DateTime列值,然後執行'.ToLocal()' –
您的意思是在客戶端? –
是的,在設置爲本地時間的環境中。如果它是可變的,那麼你需要手動將它轉換到特定的時區。重要的是以UTC保存DateTime。 –