2012-11-03 229 views
1

如何將UTC時間更改爲當地時間。將Utc時間更改爲本地時間

我有這樣的代碼,

DateTime dt = booking.CreateDateTime.Value; 

其中CreationDateTime是UTC的形式。

當我改變時間到客戶端的本地時間,它比當地時間快7個小時。

任何機構都有這方面的想法。

這是我如何改變它到當地時間。

var localTime = TimeZone.CurrentTimeZone.ToLocalTime(dt); 

當預訂而成,斷絕端代碼日期時間是

booking.CreateDateTime = DateTime.UtcNow; 
+0

該機器上的當前時區實際上是您當前所在的時區嗎? –

+0

是的這個代碼是來自澳大利亞/堪培拉的移動應用程序 –

+1

檢查「dt」的Kind屬性。也許它不是UTC,因爲你期望:http://msdn.microsoft.com/en-us/library/system.datetime.kind.aspx – Ondra

回答

0

事實上只有兩件事情是錯的:

  1. UTC日期是不是真的UTC 。

  2. 正在運行它的機器未設置爲正確的時區。

+0

請檢查我編輯的問題。 –

0

它看起來像.net假設日期是在當地時間。在下面的代碼中,dt1和dt3都與dt相同。一種解決方案是使用TimeZone.CurrentTimeZone.GetUtcOffset並自己進行計算。

dt = Now 
dt1 = TimeZone.CurrentTimeZone.ToLocalTime(dt) 
dt2 = TimeZone.CurrentTimeZone.ToUniversalTime(dt) 
dt3 = dt.ToLocalTime 
dt4 = dt.ToUniversalTime