首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何打印没有“上午”、“下午”和":“的实际时间?

问如何打印没有“上午”、“下午”和":“的实际时间?
EN

Stack Overflow用户
提问于 2016-12-27 18:02:26
回答 1查看 1.6K关注 0票数 0

在.bat文件中打印实际时间时,使用

代码语言:javascript
复制
 TIME /T

但是输出如下:

代码语言:javascript
复制
 04:30 a. m.   or  14:30 p. m.

我想知道是否可以从数字的末尾移除数字和a. m/ p. m.之间的":“,所以输出看起来是这样的:

代码语言:javascript
复制
 0430 or 1430

另外,我想知道是否可以比较输出或时间本身(time /t)。如果它低于X时间,就会触发一个动作。我不知道这段代码是否正确,但如下所示:

代码语言:javascript
复制
 set /a time=TIME /T     
 if %time%<=(01:00 a. m.) (GOTO 0am)
 if %time%<=(02:00 a. m.) (GOTO 1am)
 if %time%<=(03:00 a. m.) (GOTO 2am)
 if %time%<=(04:00 a. m.) (GOTO 3am)
 if %time%<=(05:00 a. m.) (GOTO 4am)
 if %time%<=(06:00 a. m.) (GOTO 5am)
 if %time%<=(07:00 a. m.) (GOTO 6am)
 if %time%<=(08:00 a. m.) (GOTO 7am)
 if %time%<=(09:00 a. m.) (GOTO 8am)
 if %time%<=(10:00 a. m.) (GOTO 9am)
 if %time%<=(11:00 a. m.) (GOTO 10am)
 if %time%<=(12:00 a. m.) (GOTO 11am)
 if %time%<=(13:00 a. m.) (GOTO 12am)
 if %time%<=(14:00 a. m.) (GOTO 1pm)
 if %time%<=(15:00 a. m.) (GOTO 2pm)
 if %time%<=(16:00 a. m.) (GOTO 3pm)
 if %time%<=(17:00 a. m.) (GOTO 4pm)
 if %time%<=(18:00 a. m.) (GOTO 5pm)
 if %time%<=(19:00 a. m.) (GOTO 6pm)
 if %time%<=(20:00 a. m.) (GOTO 7pm)
 if %time%<=(21:00 a. m.) (GOTO 8pm)
 if %time%<=(22:00 a. m.) (GOTO 9pm)
 if %time%<=(23:00 a. m.) (GOTO 10pm)
 if %time%<=(24:00 a. m.) (GOTO 11pm)

如果你知道更简单的方法,请告诉我。

耽误您时间,实在对不起。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-27 19:18:19

我建议首先打开命令提示符窗口,运行set /?并读取所有输出帮助页。最后一个帮助页是关于在批处理文件中使用的内置环境变量,当然,在命令行中也是如此,DATE和TIME也属于这些命令行。

DATE和TIME字符串的格式取决于使用环境变量DATE和TIME为运行批处理文件的用户帐户定义的Windows和语言设置。

由于这个原因,有时最好以与区域无关的格式获取日期和时间字符串,该格式可以使用命令实现。

代码语言:javascript
复制
wmic OS GET LocalDateTime /VALUE

例如,输出

代码语言:javascript
复制
LocalDateTime=20161227200325.171000+060

在查看此字符串时,可以很容易地看到日期和时间字符串格式。

要从此字符串中获取当前小时和分钟,在24小时格式中不带冒号,用前导零表示小时< 10和分钟< 10,可以使用以下批处理代码:

代码语言:javascript
复制
@echo off
for /F "tokens=2 delims==." %%I in ('%SystemRoot%\System32\wbem\wmic.exe OS GET LocalDateTime /VALUE') do set "LocalTime=%%I"
set "LocalTime=%LocalTime:~8,4%"
echo Local time in format HHMM is: %LocalTime%
pause

WMIC的输出由FOR拆分成3个字符串,使用=和.作为分隔符,与delims==.一起定义。对此任务感兴趣的只有第二个字符串,它使用tokens=2引用日期和时间,该字符串分配给循环变量I。国际格式的日期/时间字符串分配给环境变量LocalTime。

前8个字符用于不感兴趣的yyyymmdd格式的日期,最后2个字符用于当前秒。因此,从LocalTime中,只有从字符索引位置8开始的4个字符在输出结果时间字符串之前被分配到LocalTime旁边。

发布的WMIC输出的批处理文件的输出是:

代码语言:javascript
复制
Local time in format HHMM is: 2003

要了解所使用的命令及其工作方式,请打开命令提示符窗口,在那里执行以下命令,并非常仔细地读取为每个命令显示的所有帮助页。

  • echo /?
  • for /?
  • pause /?
  • set /?
  • wmic /?
  • wmic OS /?
  • wmic OS GET /?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41349976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档