如何在批处理文件(或msdos)中获得UTC时间?而不是系统时间格式

时间:2011-08-10 08:06:12

标签: batch-file dos

如何在批处理文件(或msdos)中获取UTC时间? 而不是系统时间格式

不喜欢dd / MMM / yyyy

3 个答案:

答案 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

参考:http://quasar.as.utexas.edu/BillInfo/JulianDatesG.html

答案 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