為什么要上DataTimeOffset?因為DateTime無法解決時區問題,經常需要時間戳轉換日期,DateTimeOffset就是應運而生,數據格式儲存了和UTC的時區差,C#幾乎全幾乎全版本支持
https://docs.microsoft.com/en-us/dotnet/api/system.datetimeoffset?view=netframework-2.0

數據庫SQL 2008以上版本就支持了,沒道理不用,我就鼓動公司上了,實際使用時,實體對象到html的DataTable綁定的時候,顯示出了時區信息,作為體驗,確實不好
我就在ViewModel上面加了一行Format的特性,返回還是DateTimeOffset屬性
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy/MM/dd HH:mm:ss}")] public DateTimeOffset StartTime { get; set; }
這樣就行了,但是給input標簽展示的時候,這樣不行,被迫StartTime.ToString("yyyy/MM/dd HH:mm:ss")
本以為就大功告成了,今天小伙伴說,數據庫查詢的時候,無法找到查詢的指定日期
被迫無耐,自己挖的坑啊,自己填。
找到一個方法TODATETIMEOFFSET,這個方法可以解決,但是它兩個參數,第二個參數是時區信息
我們就這樣實現
var timeZone = DateTimeOffset.Now.ToString("zzz"); if (model.StartTime != null) { var startTime = model.StartTime.Value.ToString("yyyy/MM/dd HH:mm:ss"); timeStr += $"[CreatedTime]>=TODATETIMEOFFSET('{startTime}', '{timeZone}')"; }
大功告成~
