我试图以24小时格式比较两次。
例如,比较03:00和18:00,这是更大的。
到目前为止,我尝试了以下编码但失败了:
comboBox1.Text = '03:00';
comboBox2.Text = '18:00';
t1 = Convert.ToDateTime(comboBox1.Text);
t2 = Convert.ToDateTime(comboBox2.Text);
CmpTm = DateTime.Compare(t1, t2);
失败是因为使用'Convert.ToDateTime'它也需要Date。但我不希望它比较日期,我只想比较24小时格式的时间。你们有什么想法吗?
答案 0 :(得分:4)
使用timespans代替,如果你只是比较Times not Dates
,为什么要使用DateTimevar time = TimeSpan.ParseExact("3:00", "HH:mm",CultureInfo.InvariantCulture);
var time2 = TimeSpan.ParseExact("18:00", "HH:mm",CultureInfo.InvariantCulture);
CmpTm = TimeSpan.Compare(time, time2);
答案 1 :(得分:2)
如果你不想比较日期/秒的部分时间(不是关于结果是相同的事实),只是小时 - 分钟 - 部分,将其转换为int并比较它们:
comboBox1.Text = "03:00";
comboBox2.Text = "18:00";
int t1 = Int32.Parse(comboBox1.Text.Replace(":", ""));
int t2 = Int32.Parse(comboBox2.Text.Replace(":", ""));
var comp = t1 == t2 ? 0 : (t1 < t2 ? -1 : 1);
答案 2 :(得分:1)
将字符串解析为DateTime
对象并进行比较。
var t1 = DateTime.ParseExact(comboBox1.Text, "HH:mm", CultureInfo.InvariantCulture);
var t2 = DateTime.ParseExact(comboBox2.Text, "HH:mm", CultureInfo.InvariantCulture);
CmpTm = DateTime.Compare(t1, t2);
答案 3 :(得分:0)
它失败是因为您在定义字符串时使用的是''
而不是""
。
当你使用Convert.ToDateTime
只有几小时和几分钟时,它会转换为今天的日期,小时,分钟等。
这是一个有效的例子;
string s = "03:00";
string s1 = "18:00";
var t1 = Convert.ToDateTime(s); // t1 will be 06/12/2013 03:00:00
var t2 = Convert.ToDateTime(s1); //t2 will be 06/12/2013 18:00:00
var CmpTm = DateTime.Compare(t1, t2); //CmpTm will be -1
这里有 demonstration
。
答案 4 :(得分:0)
答案 5 :(得分:0)
尝试以定义的格式解析它们:
comboBox1.Text = "03:00";
comboBox2.Text = "18:00";
t1 = DateTime.ParseExact(comboBox1, "HH:mm", CultureInfo.InvariantCulture);
t2 = DateTime.ParseExact(comboBox2, "HH:mm", CultureInfo.InvariantCulture);
CmpTm = DateTime.Compare(t1, t2);
答案 6 :(得分:0)
comboBox1.Text = "03:00";
comboBox2.Text = "18:00";
t1 = DateTime.ParseExact(comboBox1.Text, "HH:mm", CultureInfo.InvariantCulture);
t2 = DateTime.ParseExact(comboBox2.Text, "HH:mm", CultureInfo.InvariantCulture);
var Compare =TimeSpan.Compare(t1.TimeOfDay, t2.TimeOfDay);
`Value` `Description`
-1 t1 is shorter than t2.
0 t1 is equal to t2.
1 t1 is longer than t2.