![](/img/trans.png)
[英]Get ZoneId using country name, datetime and timezone offset values in c#
[英]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.