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");
            }
复制代码

 

posted @   燕钰达  阅读(3873)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2019-10-17 配置本地YUM源
2019-10-17 在VMware下创建windows server 2008虚拟机
2019-10-17 在VMware软件下创建CentOs虚拟机
点击右上角即可分享
微信分享提示