簡體   English   中英

c# 處理越野 DateTime 時區

[英]c# handling cross country DateTime timezone

我正在為營養師開發一個應用程序。 在這個應用程序中,營養師可以為世界各地的客戶設置飲食。 現在我面臨一個關於營養師設定的MealTime的問題。 讓我們考慮以下示例。

如果營養師在印度並將早餐用餐時間設置為28/04/2021 09:00:00 AM (IST)。 我將此值以 GMT 格式( 28/04/2021 03:30:00 AM )存儲到sql database中。 客戶在迪拜,然后他看到早餐時間為28/04/2021 07:30:00 AM而不是09:00:00 AM

處理這種情況的最佳方法是什么?

如果您改為使用DateTimeOffset將時間存儲在數據庫業務域邏輯中,則時區信息在您需要時可用,而無需加入主引用來識別正確的時區。

在涉及跨多個時區的查詢和比較的大多數應用程序設計中, DateTimeOffset可以顯着簡化查詢並減少查找邏輯以解析正確的時區。 主要的警告是您的 UI 層應該通過原始客戶端數據時區,或者您的數據攝取應該在寫入數據時對其進行清理或轉換。

在 SQL 和 C# 中,在需要時將值轉換為不同的時區是微不足道的,並且這些值將在本地正確排序和過濾,而無需將它們轉換為特定區域。

由於 SQL Server 2008 DateTimeOffset一直是有關如何管理跨多個時區的應用程序數據的指南,因此在 2021 年它不再是您的首選。

據我了解您的問題,您可以直接保存日期時間。

例如。 如果您將28/04/2021 09:00:00 AM保存在數據庫中,您的客戶無論身在何處都可以看到相同的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM