我正在运行一个小的.bat脚本,将系统时间输出到文本文件,然后导入到OBS。然而,它正在使用的项目需要将时间显示在中央时间而不是东部(我的时区)。是否可以在不更改计算机时钟的时区的情况下更改输出时区?
:loop
time /T > C:\Users\Brennan\Desktop\time\time.txt
time /T
timeout /t 15
goto loop
答案 0 :(得分:1)
命令wmic path win32_utctime get
输出UTF-16 Little Endian编码:
Day DayOfWeek Hour Milliseconds Minute Month Quarter Second WeekInMonth Year
16 0 11 12 7 3 19 4 2017
此输出可以使用命令 FOR 进行解析,并以国际日期/时间格式YYYY-MM-DD HH:mm:ss
与命令 SET 连接到UTC日期/时间字符串。< / p>
@echo off
for /F "skip=1 tokens=1,3,4,5,7,9" %%A in ('%SystemRoot%\System32\wbem\wmic.exe path win32_utctime get') do (
set "Day=0%%A"
set "Hour=0%%B"
set "Minute=0%%C"
set "Month=0%%D"
set "Second=0%%E"
set "Year=%%F"
goto BuildDateTime
)
:BuildDateTime
set "DateTimeUTC=%Year%-%Month:~-2%-%Day:~-2% %Hour:~-2%:%Minute:~-2%:%Second:~-2%"
echo UTC date/time is: %DateTimeUTC%
上面发布的数据的批处理文件的输出是:
UTC date/time is: 2017-07-16 11:12:19
也可以修改代码以获得UTC时间:
@echo off
for /F "skip=1 tokens=3,4,7" %%A in ('%SystemRoot%\System32\wbem\wmic.exe path win32_utctime get') do (
set "Hour=0%%A"
set "Minute=0%%B"
set "Second=0%%C"
goto BuildTime
)
:BuildTime
set "TimeUTC=%Hour:~-2%:%Minute:~-2%:%Second:~-2%"
echo UTC time is: %TimeUTC%
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
echo /?
for /?
set /?
wmic /?
wmic path /?
wmic path win32_utctime /?
wmic path win32_utctime get /?
答案 1 :(得分:0)
可以通过tzutil设置区域,但它是全局(系统范围)更改 - setlocal命令不会对其进行本地化。以下将暂时更改所需的区域,方法是保存并恢复它:
for /f "delims=" %%z in ('tzutil /g') do (
rem set desired zone
tzutil /s "Central Standard Time"
time /T > C:\Users\Brennan\Desktop\time\time.txt
rem restore original zone
tzutil /s "%%z"
)
请注意,更改是系统范围的,因此tzutil调用系统时钟之间的时间段会发生变化。如果脚本在tzutil调用之间中止,系统时区将保持不变。