無論什麼愚蠢的原因,我在處理時區時都很困惑。從SQL查詢轉換爲基於TimeZoneInfo的本地時間的datetimeoffset
當創建一個記錄,我用:
getutcdate()
因此,例如,它是存儲在一個DATETIMEOFFSET列,看起來像這樣:
2015-07-03 20:44:21.0300000 +00:00
所以沒有偏移,只是原始UTC。
現在,在服務器代碼中,我想要做一些事情......我有一個查詢讓我只是爲特定用戶發佈的文章的CreatedDate。我在一個數據表存儲這樣的:
Dim tz as TimeZoneInfo = GetUserTZInfo(User)
Dim dt as DataTable = GetArticleDates(User)
Dim MaxArticles As Integer = 5
Dim PostedThisMonth As Integer
Dim Remaining As Integer
我有限的用戶元/月發表5篇文章,所以你可以看到,時間可以得到朝月的基礎上,開始或結束搖搖欲墜用戶的時區。這是明天的某個地方,然而到處都是同一時刻。
但我希望它是用戶友好的,只是基於用戶,而不是服務器時間。
我在上轉換爲本地時間,因爲我DATETIMEOFFSET的數據類型的使用一些例子困難
任何人都可以提出關於如何實現以下最佳實踐/方法:
- 搜索dt以查看與用戶的月份相等的任何創建日期。
- 根據找到的內容爲GeneratedMonth生成計數。
像我說的唯一的粘性區域是在月初或月底...基本上是12小時的窗口,當然是DST,但我不那麼在意。
非常感謝幫助!
只需使用日期數學,並根據用戶時區進行調整。你有用戶的時區嗎? –
@SeanLange我做的。我向你展示的示例函數爲用戶返回一個TimeZoneInfo對象。 – user1447679
在數據庫中這樣做會更有意義嗎?否則,你必須返回所有的信息,然後過濾它。只會首先返回你想要的數據會更有效率。 –