在c#中以24小时格式比较时间

时间:2013-12-06 07:09:27

标签: c#

我试图以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小时格式的时间。你们有什么想法吗?

7 个答案:

答案 0 :(得分:4)

使用timespans代替,如果你只是比较Times not Dates

,为什么要使用DateTime
var 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)

我认为您可以使用TimeSpan来处理时间间隔。 此类提供Parse方法将字符串转换为时间跨度

答案 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);

检查HereHere

`Value`          `Description`


  -1            t1 is shorter than t2.

   0            t1 is equal to t2.

   1            t1 is longer than t2.