我想計算檢查時間到現在的時間,並獲得小時。我如何才能獲得時間差異?
我的字符串,例如「時間」 ......
string t1 = UserParam[12].ToString(); // "9/26"
string t2 = UserParam[13].ToString(); // "14:51\r"
我需要他們在我的項目,我從許可證服務器獲取時間由用戶,我想以示區別到現在。我想在數小時內展示。
我想時間> 1小時(S)49分鐘
我想計算檢查時間到現在的時間,並獲得小時。我如何才能獲得時間差異?
我的字符串,例如「時間」 ......
string t1 = UserParam[12].ToString(); // "9/26"
string t2 = UserParam[13].ToString(); // "14:51\r"
我需要他們在我的項目,我從許可證服務器獲取時間由用戶,我想以示區別到現在。我想在數小時內展示。
我想時間> 1小時(S)49分鐘
如何---我認爲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"
)。您可以使用Trim
或TrimEnd
刪除它們。例如:
string t2 = UserParam[13].ToString().TrimEnd(new []{ '\r', '\n' }); // 14:51
我得到一個錯誤 - >不正確的格式 – Tarasov
@Tarasov:編輯我的答案。 –
既然你警告小時和分鐘使用TimeSpan.Hour和TimeSpan.Minute而不是TotalHours。 –
您可以使用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);
你的意思是[DateTime.Subtract](http://msdn.microsoft.com/en-us/library/8ysw4sby.aspx)? –
更新爲Jim Mischel的評論,謝謝 – HimBromBeere
你會想在DateTime
結構的時間。如果在字符串中有時間戳信息,則應使用DateTime.TryParse
填充DateTime
。但是,如果你在一個字符串中有時間戳,指定樣式參數(DateTimeStyles
)中的時區信息將很重要。
那麼你可以採取讓減去2個DateTime
stucts一個TimeSpan
和使用TotalHours
財產
(dt1 - dt2).TotalHours
爲什麼'UserParam [12]的ToString()'返回兩個不同的值?此外,'UserParam [12]'的實際類型是什麼?如果它已經是'DateTime',那麼你可能應該像這樣使用它,而不是調用'ToString()'。 –
使用DateTime.TryParse,DateTime.UtcNow,將差異放在TimeSpan中並使用TimeSpan.TotalHours – jltrem
目前尚不清楚你想要做什麼。請提供更多信息。 –