我需要將事件時間存儲在Azure表存儲中。那個時間必須在用戶當地時間,而不是UTC ......真的。 [數據被查詢爲「查找週六發生在(用戶)上的所有購買行爲」。顯然,「星期六」代表了全球用戶的大範圍時間,而且我無法通過每個用戶分別按時區查詢]。無法將DateTime反序列化爲使用JsonSerializer的本地時間
數據來自Json的Event Hub。 date屬性是DateTime,它在客戶端上設置爲DateTime.Now(發送到Event Hub)。我在兩端都使用了Newtonsoft JsonSerializer。反序列化時,我似乎無法在本地時間獲取日期。我已經試過各種形式的:
JsonSerializer jsDeserializer = new JsonSerializer();
jsDeserializer.DateTimeZoneHandling = DateTimeZoneHandling.Local;
我認爲這是最好的,如果該時區信息得到剝離出來,它好像它是一個常見的問題不夠和有足夠的性能來JsonSerializer處理呢......但到目前爲止沒有運氣。我需要寫一個自定義轉換器嗎?或者我必須將它串聯起來?
對這些意見:
- 我不想知道或關心的JSON是什麼。如前所述,C# DateTime屬性在客戶端中設置爲DateTime.Now,並調用Json 序列化程序。在服務器上,Json解串器稱爲 ,並返回DateTime屬性。從理論上講,我絕不應該讓 看到實際的Json ......這點很重要。
- 我不想知道或關心「我的時區」是什麼。在Azure上運行的Event Hub WebJob是 ,所以我甚至不能保證 服務器的時區是什麼。
- 如果EDT中客戶端上的DateTime.Now的值是5pm,它總是被序列化=>反序列化到晚上9點。爲了查詢目的,它需要在下午5點存儲在數據庫中。
我想問題是缺少樣本json,您的時區,預期的輸出 –
事實上,發佈一個好問題並不複雜。 *我有這個輸入,我寫這個代碼,我得到這個輸出,但期望這* – EZI