2010-04-12 159 views
0

如何檢查兩者之間的時間。假設我有像「02:00 PM」這樣的字符串格式的時間,我想在其他兩次之間檢查它。由於時間是字符串格式,我該如何檢查這一點? 要與時間比較的值存儲在DataTable中,並且正在使用數據表的Select功能。時間比較

+5

不要將它存儲在一個字符串中,將它放入DateTime中,然後可以更容易地比較這些值。 – 2010-04-12 09:24:27

+0

其中一個值在DataTable中,我如何將它存儲在該表中,因爲我必須將該值與我的表單控件(日期時間控件)上的兩個值進行比較。 – 2010-04-12 09:31:24

+0

*永遠不會*將日期或時間存儲在數據庫表中的字符串中。當您的dbase被另一個國家/地區的機器讀取時,您會遇到重大文化問題。 – 2010-04-12 13:22:35

回答

0

您可以隨時轉換爲字符串時間跨度(或日期時間)是這樣的:

 TimeSpan ts = Convert.ToDateTime("02:00 PM").TimeOfDay; 
     TimeSpan checkValue1 = Convert.ToDateTime("01:00 PM").TimeOfDay; 
     TimeSpan checkValue2 = Convert.ToDateTime("03:00 PM").TimeOfDay; 
     bool passed = (ts >= checkValue1 && ts <= checkValue2); 
3

嘗試DateTime.Parse(dateString1) > DateTime.Parse(dateString2)

如果您的字符串格式與DateTime的字符串格式不兼容,則需要手動解析日期。

編輯:
您可以使用ParseExact指定自己的格式:

string Format = "T"; 
CultureInfo provider = new CultureInfo("en-US"); 
if (DateTime.ParseExact(dateString1, format, provider) > 
     DateTime.ParseExact(dateString2, format, provider)) 
{ 
    ... 
+0

如何將它與DataTable中的時間進行比較?有什麼方法可以比較dataTable中的時間嗎? – 2010-04-12 10:10:36

+0

如果您在DataTable中的時間是以字符串形式存儲的,則可以從DataTable中獲取時間字符串並按上述方式進行比較。 – Vlad 2010-04-12 11:42:52

0

轉換它以DateTime爲當前日期爲日期,或TimeSpan表示從午夜起的時間:

DateTime time = DateTime.Parse(timeString); 

或者:

TimeSpan time = DateTime.Parse(timeString).TimeOfDay; 

具有價值爲TimeSpan當你比較可能更容易,否則你必須確保你比較它的DateTime值也有當前日期作爲日期。另一方面,可以使用DateTime值來比較整個午夜的時間,例如,在明天的23.00和01.00之間。