2014-01-16 45 views
2

我有一個Web服務(MVC Web API),用於存儲UTC中的日期時間值。 iPad與API通信,並會在標題中傳遞時區設置。 API將根據iPad發送的時區將UTC值轉換爲正確的本地時間。從iPad(目標C)到MVP Web API(C#)的時區映射

看來我需要Objective C時區值列表與C#(。net)時區值之間的映射。除了讓iPad能夠隱藏到當地時間之外,這是最好的方式嗎?

GMT timezone conversion in objective c

http://msdn.microsoft.com/en-us/library/ms912391%28v=winembedded.11%29.aspx

回答

2

轉換時區標識符看起來脆弱。您可以在幾分鐘內發送偏移量(如+600或類似的)。

另一方面,最乾淨的解決方案似乎讓設備進行轉換。有什麼理由不能做到這一點?

+0

我讀的地方,偏移量將有一定優勢的情況下,因爲夏令時,但沒有顯著的。沒有很好的理由不在設備上執行轉換,所以我們走下了這條路。 – HackITMngr

+0

@HackITMngr邊緣情況是當你走另一條路。 UTC到本地時間是確定性的,但一些本地時間值可能是2個不同的UTC值 - 當時鍾由於夏令時而向後移動時,相同的本地時間在一小時內發生兩次。這更令人困惑,因爲術語「時區」可以指代靜態偏移量(夏令時被忽略),也可以指時間在特定地點流動的方式(可適用夏令時)。 – Peter

2

如果「Objective C的時區值」你的意思是IANA時區,如「美國/紐約」,那麼你應該在你的.NET代碼中使用​​。

最好,您應該直接使用IANA時區。野田時間完全支持IANA區域。

但是,如果您的代碼在必須使用Windows時區標識符,則可以使用Noda時間to do the translation。這樣做的唯一原因是,如果您有現有代碼使用.net TimeZoneInfo類。

補充閱讀:

+0

我們說服iPad開發者轉換到當地時間,而不是讓服務做到這一點。野田時間的建議可能會起作用,儘管我沒有嘗試過。 – HackITMngr