2013-09-26 65 views
0

我想計算檢查時間到現在的時間,並獲得小時。我如何才能獲得時間差異?

我的字符串,例如「時間」 ......

string t1 = UserParam[12].ToString(); // "9/26" 
string t2 = UserParam[13].ToString(); // "14:51\r" 

我需要他們在我的項目,我從許可證服務器獲取時間由用戶,我想以示區別到現在。我想在數小時內展示。

我想時間> 1小時(S)49分鐘

+2

爲什麼'UserParam [12]的ToString()'返回兩個不同的值?此外,'UserParam [12]'的實際類型是什麼?如果它已經是'DateTime',那麼你可能應該像這樣使用它,而不是調用'ToString()'。 –

+2

使用DateTime.TryParse,DateTime.UtcNow,將差異放在TimeSpan中並使用TimeSpan.TotalHours – jltrem

+1

目前尚不清楚你想要做什麼。請提供更多信息。 –

回答

3

如何---我認爲t1是月份和日期t2是小時和分鐘。

您可以使用DateTime.ParseExact

string t1 = "9/26"; 
string t2 = "14:51"; 
DateTime dt = DateTime.ParseExact(string.Format("{0} {1}", t1, t2), "M/dd HH:mm", CultureInfo.InvariantCulture); 
TimeSpan diff = DateTime.Now - dt; 
double totalHours = diff.TotalHours; // 0.726172292194444 

編輯

我得到一個錯誤 - >不正確的格式

也許因爲你不想要的字符在字符串的末尾(如"14:51\r")。您可以使用TrimTrimEnd刪除它們。例如:

string t2 = UserParam[13].ToString().TrimEnd(new []{ '\r', '\n' }); // 14:51 
+0

我得到一個錯誤 - >不正確的格式 – Tarasov

+0

@Tarasov:編輯我的答案。 –

+0

既然你警告小時和分鐘使用TimeSpan.Hour和TimeSpan.Minute而不是TotalHours。 –

0

您可以使用DateTime.Subtract計算日期和時間之間的區別:

string date = "9/26 14:51"; 
DateTime dt = DateTime.ParseExact(date, "M/dd HH:mm", CultureInfo.InvariantCulture); 
TimeSpan diff = DateTime.Now.Subtract(dt); 
+0

你的意思是[DateTime.Subtract](http://msdn.microsoft.com/en-us/library/8ysw4sby.aspx)? –

+0

更新爲Jim Mischel的評論,謝謝 – HimBromBeere

0

你會想在DateTime結構的時間。如果在字符串中有時間戳信息,則應使用DateTime.TryParse填充DateTime。但是,如果你在一個字符串中有時間戳,指定樣式參數DateTimeStyles)中的時區信息將很重要。

那麼你可以採取讓減去2個DateTime stucts一個TimeSpan和使用TotalHours財產

(dt1 - dt2).TotalHours 
相關問題