C# DateTime 时间比较(只包含年月日时分不包含秒)

发布时间 2023-10-17 16:04:42作者: 燕钰达

一、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");
            }