如何在批处理文件(或msdos)中获取UTC时间? 而不是系统时间格式
不喜欢dd / MMM / yyyy
答案 0 :(得分:2)
没有自己的日期数学,纯批处理没有好办法。唯一可用的时间函数是time /t
或%time%
,并且它们不提供任何位置信息,因此您最终也需要查询注册表。
Powershell可以做到这一点,你可以编写一个小脚本来获取你想要的信息并将其传递给你的批处理文件。
Get-Date -date (Get-Date).ToUniversalTime()-uformat %y%m%d%H%M%j
(来自此处的讨论:http://www.powershellcommunity.org/Forums/tabid/54/aft/4361/Default.aspx)
你可以用javascript或vbs做同样的想法。
答案 1 :(得分:1)
如果您只想将日期转换为1961年开始的朱利安日数(当UTC正式启动时,即UTC第0天00:00:00是1961年1月1日的第一个瞬间),您可以使用这些批处理文件。
DATETOJULIAN.BAT:
@ECHO OFF
REM GET MONTH, DAY, YEAR VALUES
FOR /F "TOKENS=1-3 DELIMS=/" %%A IN ("%1") DO SET MM=%%A& SET DD=%%B& SET YY=%%C
REM ELIMINATE LEFT ZEROS
SET /A DD=10%DD% %% 100, MM=10%MM% %% 100
REM CALCULATE JULIAN DAY NUMBER
IF %MM% LSS 3 SET /A MM+=12, YY-=1
SET /A A=YY/100, B=A/4, C=2-A+B, E=36525*(YY+4716)/100, F=306*(MM+1)/10, JDN=C+DD+E+F-1524
DATETOUTC.BAT:
@ECHO OFF
CALL DATETOJULIAN %1
SET UTCDAY=%JDN%
CALL DATETOJULIAN 1/1/1961
SET /A UTCDAY-=JDN
ECHO %UTCDAY%
例如:
DATETOUTC %DATE%
18484
答案 2 :(得分:0)
它很简单,但我用它:
'Create a string to be used for file name that is the current date time stamp
dtmYear = Year(Date)
dtmMonth = Month(Date)
If Len(dtmMonth) = 1 Then dtmMonth = "0" & dtmMonth
dtmDay = Day(Date)
If Len(dtmDay) = 1 Then dtmDay = "0" & dtmDay
dtmHour = Hour(Now)
If Len(dtmHour) = 1 Then dtmHour = "0" & dtmHour
dtmMinute = Minute(Now)
If Len(dtmMinute) = 1 Then dtmMinute = "0" & dtmMinute
dtmSecond = Second(Now)
If Len(dtmSecond) = 1 Then dtmSecond = "0" & dtmSecond
strUTCDate = dtmYear & dtmMonth & dtmDay & dtmHour & dtmMinute & dtmSecond