zoukankan      html  css  js  c++  java
  • 【批处理】时间处理

    SET /a a=%time:~0,2%*60+%time:~3,2%
    if %a% geq 480 if %a% leq 1080 (goto 下一步)
    GOTO :EOF
    :下1步
    ..........

    上面代码(红色标示)是取 %time% 环境变量中的小时(采用截取字符串的方法取得的)

    假如: %time% 所示时间为:11:15:33.01 (即:11点15分),则 %time:~0,2% 就是取 %time% 变量中从偏移量0开始处取两个字符。取到的就是小时。

    %time:~0,2%*60,把取到的小时再乘以60(分钟),因为一小时是60分钟,所以通过字符串截取功能取到的小时数要换算成总的分钟数,所以要再乘以60。因为将小时换算成分钟是为了方便比对某个时间的范围。

    +%time:~3,2%,当取到小时并且让小时乘以60而换算成分钟还不行,因为还要得到 %time% 变量中的分钟数,所以 %time:~3,2% (假如%time%时间为: 11:15:33.01)那么就是从偏移量3开始(偏移量从0开始计算)取两个字符,这两个字符就是上面(蓝色标示)“15”。
    因为小时数已换算成分钟了,再加上%time%里的分钟数,这样求出的当前时间的总分钟数才更准确。


    换算得到总的分钟数就可以更方便简单的使用 IF 来计算(并且还可以进行加减计算等特殊时间或是以这种原理的对日期的范围操作……)。

    leq 1080 (上面代码绿色标示),这里的 LEQ 是小于或等于的含义,它的帮助信息使用 IF /? 命令可以看到:

            EQU - 等于
            NEQ - 不等于
            LSS - 小于
            LEQ - 小于或等于
            GTR - 大于
            GEQ - 大于或等于

    上面代码含义是指:小于或等于 1080 分钟(18点:就是从0点到晚上6点共有18个小时*每小时60分钟,就是1080分钟)

    然后以分钟做为对比的基础单位:

    IF  当前时间大于或等于480分钟(即480/60=8小时,就是上午8点) 并且  当前时间小于或等于1080分钟(1080/60=18小时,就是晚18点),只要时间的范围在这之间,这就是楼主要求的:当前时间如果在早8点——晚18点之间,就执行某个命令……

    (截取字符串知识点:   SET /?  的帮助信息中有)
    (%time%的知识点: SET /?  的帮助信息的最后面有关于可以“调用”的动态环境变量)
    (判断大小与判断的知识点: IF /? 的帮助信息中)
    (Goto的知识点:   GOTO /? 的帮助信息中)

    对于日期也可以使用类似的全转成数值的方法来判定某个文件的时间属性:属于在某个日期到某个日期的范围之内等特殊应用。

    作者:行走的贝壳

    来源贝壳笔记 (http://ronli.cnblogs.com)

  • 相关阅读:
    基于kafka-net实现的可以长链接的消息生产者
    Windows服务安装、卸载、启动和关闭的管理器
    基于Confluent.Kafka实现的KafkaConsumer消费者类和KafkaProducer消息生产者类型
    [转]C#中HttpClient使用注意:预热与长连接
    基于Confluent.Kafka实现的Kafka客户端操作类使用详解
    [转载]RabbitMQ消息可靠性分析
    ASP.NET Core3.1 MVC 添加验证规则
    asp.net core 3.1 webapi接口参数有时间类型取不到值得问题
    asp.net core 3.1 引用的元包dll版本兼容性问题解决方案
    Python安装和环境配置
  • 原文地址:https://www.cnblogs.com/ronli/p/2382416.html
Copyright © 2011-2022 走看看