C# DateTime 时间比较(只包含年月日时分不包含秒)
一、DateTime.Compare(全时间比较)
// 摘要: //比较系统的两个实例。DateTime,并返回一个整数,该整数指示 //第一个实例是否早于、相同于或晚于第二个实例 //例如。 // // 参数: //t1: //第一个要比较的对象。 //t2: //第二个要比较的对象。 // // 返回结果: //一个带符号的数字,表示t1和t2的相对值。 //值类型-条件 //小于零–t1早于t2。 //零–t1与t2相同。 //大于零–t1晚于t2。 public static int Compare(DateTime t1, DateTime t2);
注:DateTime的Compare方法为全时间比较,方法返回值为int,t1>t2返回值大于0,t1<t2返回值小于0,t1=t2返回值等于0。
二、使用TimeSpan实现部分时间比较(可实现只包含年月日时分不包含秒)
TimeSpan:表示时间间隔
问题:想要判断两个时间前部分比较,例如:
t1:2023/10/01 11:10:25
t2:2023/10/01 11:10:29
t3:2023/10/01 11:10:29
t4:2023/10/01 11:11:29
仅想比较 t1、t2、t3、t4 红色部分,不考虑秒。
方案:时间相减得到TimeSpan类型的时间间隔, TimeSpan包含转为不同单位的成员变量(如分钟:TotalMinutes),使用相应的方法得到double类型数值(两个时间间隔多少分钟,不考虑小数就是不考虑秒)。
//时间t1 DateTime t1 = DateTime.Now; //时间t2 DateTime t2 = new DateTime(2023, 10, 17, 15, 15, 59); //时间t1-t2 得到时间间隔TimeSpan,将时间间隔转化为数值类型, TimeSpan ts = t1 - t2; //年月日时分比较 double minutes = ts.TotalMinutes; if (minutes >= 1) { Console.WriteLine("t1 大于 t2 一分钟及以上"); } //年月日时比较 double hours = ts.TotalHours; if (minutes >= 1) { Console.WriteLine("t1 大于 t2 一小时及以上"); }
成员变量:
// 返回结果:将时间间隔转化为毫秒 public double TotalMilliseconds { get; }//将时间间隔转化为小时 public double TotalHours { get; }//将时间间隔转化为天数 public double TotalDays { get; }is instance. The return value can be positive or negative.//将时间间隔转化为分钟 public double TotalMinutes { get; }
三、比较DateTime.Date两个时间的年月日
参考:官方文档DateTime.Date
//时间t1 DateTime t1 = new DateTime(2023, 10, 18, 15, 15, 59); // 2023/10/18 00:00:00 DateTime dateOnly1 = t1.Date; //时间t2 DateTime t2 = new DateTime(2023, 10, 17, 15, 15, 59); // 2023/10/17 00:00:00 DateTime dateOnly2 = t2.Date; if (DateTime.Compare(t1.Date, t2.Date) > 0) { Console.WriteLine("年月日t1 大于 t2"); }