首页 > 编程语言 >代码段——C#判断时间是否在某个范围

代码段——C#判断时间是否在某个范围

时间:2024-04-24 10:22:52浏览次数:21  
标签:endTime C# 指定 代码段 dateTime 时间 startTime 某个 DateTime

目录

1.使用DateTime.Compare()

  • 注意:两个比较的时间,一定与相同的时间精度,比如都精确到分钟,或都精确到日
  • 注意:这里我判断指定时间是否在时间范围的闭区间里
        /// <summary>
        /// 判断指定的时间是否在指定的范围
        /// </summary>
        /// <param name="dateTime">指定时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <param name="startTime">开始时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <param name="endTime">结束时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <returns></returns>
        public static bool IsBetweenTimeSpan(string dateTime, string startTime, string endTime)
        {
            DateTime dt = Convert.ToDateTime(dateTime);
            DateTime dtStartTime = Convert.ToDateTime(startTime);
            DateTime dtEndTime = Convert.ToDateTime(endTime);
            int compNum1 = DateTime.Compare(dt, dtStartTime);
            int compNum2 = DateTime.Compare(dt, dtEndTime);

            return compNum1 >= 0 && compNum2 <= 0;
        }

2.通过时间相减计算时间间隔,可以指定精确度

  • 注意:这里我使用的TotalSeconds(),让比较时间精确到秒
  • 注意:这里我判断指定时间是否在时间范围的闭区间里
        /// <summary>
        /// 判断指定的时间是否在指定的范围
        /// </summary>
        /// <param name="dateTime">指定时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <param name="startTime">开始时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <param name="endTime">结束时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
        /// <returns></returns>
        public static bool IsBetweenTimeSpan(string dateTime, string startTime, string endTime)
        {
            DateTime dt = Convert.ToDateTime(dateTime);
            DateTime dtStartTime = Convert.ToDateTime(startTime);
            DateTime dtEndTime = Convert.ToDateTime(endTime);
            double ts1 = (dt - dtStartTime).TotalSeconds;
            double ts2 = (dt - dtEndTime).TotalSeconds;
            return ts1 >= 0 && ts2 <= 0;            
        }


        /// <summary>
        /// 判断指定的时间是否在指定的范围
        /// </summary>
        /// <param name="dateTime">指定时间,DateTime类型</param>
        /// <param name="startTime">开始时间,DateTime类型</param>
        /// <param name="endTime">结束时间,DateTime类型</param>
        /// <returns></returns>
        public static bool IsBetweenTimeSpan(DateTime dateTime, DateTime startTime,  DateTime endTime)
        {
            double ts1 = (dateTime - startTime).TotalSeconds;
            double ts2 = (dateTime - endTime).TotalSeconds;
            return ts1 >= 0 && ts2 <= 0;
        }


        /// <summary>
        /// 判断当前时间是否在指定的范围
        /// </summary>
        /// <param name="startTime">开始时间,DateTime类型</param>
        /// <param name="endTime">结束时间,DateTime类型</param>
        /// <returns></returns>
        public static bool IsBetweenTimeSpan(DateTime startTime, DateTime endTime)
        {
            DateTime dateTime = DateTime.Now;
            double ts1 = (dateTime - startTime).TotalSeconds;
            double ts2 = (dateTime - endTime).TotalSeconds;
            return ts1 >= 0 && ts2 <=0;
        }

标签:endTime,C#,指定,代码段,dateTime,时间,startTime,某个,DateTime
From: https://www.cnblogs.com/shanzhiming/p/18154505

相关文章

  • centos7删除mysql的步骤
    centos7删除mysql的步骤方法一、1.查看安装了mysql哪些服务rpm-qa|grep-imysql2、然后逐个去卸载卸载前关闭mysql服务rpm-ev--nodepsmysql-community-release-el7-5.noarchrpm-ev--nodepsmysql-community-common-5.6.38-2.el7.x86_64rpm-ev--nodepsmysql-co......
  • 界面控件DevExpress VCL v24.1预览 - 支持RAD Studio 12.1、图表新功能
    DevExpressVCL Controls是Devexpress公司旗下最老牌的用户界面套包,所包含的控件有:数据录入、图表、数据分析、导航、布局等。该控件能帮助您创建优异的用户体验,提供高影响力的业务解决方案,并利用您现有的VCL技能为未来构建下一代应用程序。我们距离下一个主要更新(v24.1)还有几......
  • 第二届先进传感与智能系统国际会议(ICASIS 2024)
    第二届先进传感与智能系统国际会议(ICASIS2024)日期:2024年6月22-23日地点:中国昆明会议亮点:前沿议题:聚焦先进传感技术、智能传感、物联网、大数据分析与人工智能等核心话题。全球交流:与全球顶级学者、行业领袖面对面,共同探讨行业趋势与未来挑战。有中国工程院外籍院士Prof.......
  • 「Java开发指南」如何利用MyEclipse启用Spring DSL?(二)
    本教程将引导您通过启用SpringDSL和使用ServiceSpringDSL抽象来引导Spring和Spring代码生成项目,本教程中学习的技能也可以很容易地应用于其他抽象。在本教程中,您将学习如何:为SpringDSL初始化一个项目创建一个模型包创建一个服务和操作实现一个服务方法启用JAX-WS和DWR......
  • 【转】[C#][WPF] ContentControl 和 ContentPresenter 的区别
    转自:阿里的通义灵码在 https://blog.csdn.net/yao_hou/article/details/134431366需要付费阅读,所以从阿里的通义灵码来寻找答案:WPF中的 ContentControl 和 ContentPresenter 虽然都涉及内容展示,但它们扮演着不同的角色,具有各自的特性和用途。以下是两者之间的主要区......
  • Cisco Catalyst 9800 Wireless Controller, IOS XE Software Release IOSXE-17.14.01
    CiscoCatalyst9800WirelessController,IOSXESoftwareReleaseIOSXE-17.14.01EDCatalyst9800系列无线控制器软件请访问原文链接:CiscoCatalyst9800WirelessController,IOSXESoftwareReleaseIOSXE-17.14.01ED,查看最新版。原创作品,转载请保留出处。作者主页:sy......
  • Cisco Catalyst 9800-CL Wireless Controller for Cloud, Release IOSXE-17.14.01 ED
    CiscoCatalyst9800-CLWirelessControllerforCloud,ReleaseIOSXE-17.14.01ED面向云的思科Catalyst9800-CL无线控制器,专为基于意图的网络全新打造请访问原文链接:CiscoCatalyst9800-CLWirelessControllerforCloud,ReleaseIOSXE-17.14.01ED,查看最新版。原创作......
  • Python基于opencv实现的人脸识别--入门项目
    先去opencv官网下载人脸识别的训练集https://opencv.org/releases/解压目录要记录主要使用haarcascade_frontalface_default.xml摄像头录入人脸(可选)可以弄一个文件夹,里面放一堆图片importcv2face_name='xxxx'#该人脸的名字#加载OpenCV人脸检测分类器face_cas......
  • python包:CV
    OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和MacOS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV用C++语......
  • 实时分析平台设计方案:924-6U CPCI振动数据DSP实时分析平台
      一、产品概述   基于CPCI结构完成40路AD输入,30路DA输出的信号处理平台,处理平台采用双DSP+FPGA的结构,DSP采用TI公司新一代DSPTMS320C6678,FPGA采用XilinxV55VLX110T-1FF1136芯片,设计尽量采用工业级芯片。该方案描述了技术要求,硬件设计、软件设计方案......