Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何比较两个时间戳以查看一个时间戳是否晚于特定的分钟数?_Windows_Batch File_Timestamp - Fatal编程技术网

Windows 如何比较两个时间戳以查看一个时间戳是否晚于特定的分钟数?

Windows 如何比较两个时间戳以查看一个时间戳是否晚于特定的分钟数?,windows,batch-file,timestamp,Windows,Batch File,Timestamp,我试图比较两个时间戳(timeA与timeB)的格式为HH:MM,没有秒,这样我就可以看到如果timeB的时间大于30分钟或大于timeA的时间。我可以假设timeB总是等于或(最常见的)晚于timeA REM 12:42 set "hourA=12" set "minA=42" REM 12:49 set "hourB=12" set "minB=49" if %hourA% equ %hourB% ( if %minA% equ %minB% ( echo A is equa

我试图比较两个时间戳(
timeA
timeB
)的格式为HH:MM,没有秒,这样我就可以看到如果
timeB
的时间大于30分钟或大于
timeA
的时间。我可以假设
timeB
总是等于或(最常见的)晚于
timeA

REM 12:42
set "hourA=12"
set "minA=42"

REM 12:49
set "hourB=12"
set "minB=49"

if %hourA% equ %hourB% (
  if %minA% equ %minB% (
    echo A is equal to B!
  ) else (
    echo A is NOT equal to B!
  )
)
我发现很难实现检查
timeB
是否比
timeB
大于或等于30分钟的逻辑,例如
timeA
12:42
timeB
13:15
需要先检查小时,然后是分钟数,然后再检查小时数

任何建议或示例代码都很好(我对批处理脚本比较陌生)。批处理脚本在Windows上运行。

@ECHO OFF
SETLOCAL
设置“timestra=12:42”
设置“timestrb=03:01”
设置/a timediff=(1%timestrb:~0,2%-1%timestra:~0,2%)*60+(1%timestrb:~-2%-1%timestra:~-2%)
如果%timediff%lss 0集/a timediff+=60*24
回波时差=%timediff%
后藤:EOF
给定两个24小时格式的有效时间字符串,将时差设置为60*((100+最后一个HH)-(100+第一个HH))+((100+最后一个MM)-(100+第一个MM))

100+
通过在时间字符串的前/后两个字符前面串入
1
来实现。这克服了批处理的“前导0为八进制”格言,因为两种情况下的前导数字都是
1

如果整体计算结果为负,那么我们已经过了午夜,所以加上一整天的分钟数。当然,这只有在两次之间的距离小于24小时时才起作用,考虑到目前的情况,这可能是足够的

那么这就是一个简单的问题

if %timediff% gtr 30 (echo more than 30) else (echo less than 30)

看见答案中的代码示例可以修改30分钟,而不是4小时。对于一天内的时差检查,使用
set/a
将小时乘以60,再加上分钟,然后使用
if
比较两个整数值。感谢您提供详细答案。当我自己运行它时,它工作得非常好。但是,当我将命令(第3-8行)复制粘贴到现有脚本中时,我得到了一个
0,这在当时是出乎意料的
。你知道为什么会这样吗?你需要准确地看到你在批次中有什么以及两个时间串的内容。当然,您正在适当地设置时间字符串,不是吗?此外,它可能取决于批次中的精确位置-如果它位于
代码块
(括号内的一系列行)内,则需要
延迟扩展
,并使用
代替粘贴代码中的
%
(请参见顶部栏上的
搜索
功能,获取有关
延迟扩展
的详细文档,如果需要)抱歉,我确实解决了括号问题。谢谢