2011-12-25 105 views
1

我正在使用UTC保存日期時間。 我將datetime作爲用戶輸入,之後我想在數據庫中保存該日期時間的UTC值。 我使用一個文本框(用於確切日期)和一個下拉列表(用於獲取該日期的小時數)來獲取用戶的日期時間輸入值。下面的 是我的代碼,用於合併兩個控件值後從用戶獲取確切的輸入日期時間。 喜歡:25/12/2011如日期和10小時爲小時combinding後兩值的日期值是25/12/2011上午10:00 堡壘他的計算,我使用下面的代碼:將數據庫中的日期時間保存爲UTC

 string[] dateArray = HdnDPC_date1.Value.Split('/'); 
      string dtt = dateArray[1] + "/" + dateArray[0] + "/" + dateArray[2]; 
      var fdate = Convert.ToDateTime(dtt); 

      DateTime dadate = new DateTime(Convert.ToInt32(dateArray[2]), Convert.ToInt32(dateArray[1]), Convert.ToInt32(dateArray[0])); 
      dadate = Convert.ToDateTime(fdate).AddHours(deadlineHr); 

下面的代碼是根據時區用於將日期時間值轉換成UTC

  DateTime DeadLine = TimeZoneInfo.ConvertTimeToUtc(dadate); 

,但代碼不轉換輸入的日期時間,它是根據「中央時區,美國&加拿大總是轉換「 但我想根據用戶的時區轉換該日期時間。

請幫我找出這個問題,爲什麼發生這種情況。

回答

2

您可以嘗試使用上ToUniveralTimehere

+0

你必須告訴它什麼**轉換從** – Andomar 2011-12-25 13:59:50

+0

@Shai:ToUniveralTime時間總是根據本地時區給予的時間。 – Askiitians 2011-12-26 10:24:49

0

ToUniversalTime功能

DateTime univDateTime = DateTime.Now.ToUniversalTime(); 

更多設置你的線程的當前區域性用戶的文化,如:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage); 

http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

1

您需要指定用戶的時區。例如:

TimeZoneInfo.ConvertTimeToUtc(dadate, 
      TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")); 
相關問題