如何使用Windows批处理文件获取UTC时间

时间:2012-03-26 11:45:13

标签: batch-file cmd utc

我一直在尝试找到一种获取Windows批处理文件的方法,以便在运行时显示当前的UTC时间。换句话说,获得自1970年启动以来的当前毫秒数。

有谁知道如何做到这一点。

3 个答案:

答案 0 :(得分:10)

使用WMI:

for /f %%x in ('wmic path win32_utctime get /format:list ^| findstr "="') do set %%x

这将设置变量DayDayofWeekHourMinuteMonthQuarterSecond,然后,您可以使用WeekInMonthYear

尽管如此,你不会轻易从Windows获得Unix纪元。如果你有PowerShell,你可以使用

[long]((date).touniversaltime()-[datetime]'1970-01-01').totalmilliseconds

您可以通过

从批处理文件调用
powershell "..."

但在这种情况下,无论如何你都可以用真实语言编写批处理文件。

答案 1 :(得分:0)

wmic TIMEZONE get * /value

样本输出

Bias=-480
Caption=(UTC-08:00) Pacific Time (US & Canada)
DaylightBias=-60
DaylightDay=2
DaylightDayOfWeek=0
DaylightHour=2
DaylightMillisecond=0
DaylightMinute=0
DaylightMonth=3
DaylightName=Pacific Daylight Time
DaylightSecond=0
DaylightYear=0
Description=(UTC-08:00) Pacific Time (US & Canada)
SettingID=
StandardBias=0
StandardDay=1
StandardDayOfWeek=0
StandardHour=2
StandardMillisecond=0
StandardMinute=0
StandardMonth=11
StandardName=Pacific Standard Time
StandardSecond=0
StandardYear=0

在此示例中,我需要UTC信息,以便在输出到日志时可以插入UTC信息:

wmic TIMEZONE get * /value | FIND /I "Description"

现在我想解析字符串:

(在.cmd脚本/程序中请注意,仅将%% P,%P用于控制台)

FOR /F "tokens=2 delims==" %P IN ('wmic TIMEZONE get * /value ^| FIND /I "Description"') DO Echo %P> var_UTC.txt

现在我要设置一个包含UTC的变量

SET /P $SYSTEM_UTC= < var_UTC.txt

现在我要在写入日志时使用变量

(请注意,将其包含在变量中如何控制文本)

echo 2020-12-15 [INFO] %$SYSTEM_UTC% > program.log

您可以查看我的Github存储库中的某些复杂程序

答案 2 :(得分:0)

替代方案:

StringBuilder