获取不同时区的时间戳(Windows命令行)

时间:2014-01-24 00:34:34

标签: windows batch-file timestamp

我需要在将来获得7小时的日期戳。

我目前有一个解决方案,但它需要更改系统日期,这并不理想。有没有人知道如何在不改变时区的情况下做到这一点?

当前方法(我的时区是PST,亚速尔群岛是+ 7小时):

tzutil /s "Azores Standard Time"

echo %DATE:~-4%%DATE:~4,2%%DATE:~7,2%

tzutil /s "Pacific Standard Time"

2 个答案:

答案 0 :(得分:3)

这很容易使用getTimeStamp.bat - a hybrid JScript/batch utility that does timestamp computations and formatting该实用程序是纯脚本,可​​以从XP开始在任何现代Windows机器上运行 - 不需要第三方可执行文件。

脚本中内置了完整的文档。它提供了大量选项来指定给定的时间戳(或使用当前的本地日期/时间),添加日期和时间偏移,指定时区以及格式化结果。

在我看来,您希望您的日期具有YYYYMMDD格式。假设您在当前目录中有getTimeStamp.bat,或者更好,在路径中的某个位置,那么从命令提示符发出的以下命令将打印出未来7小时的日期:

getTimeStamp -oh +7 -f {yyyy}{mm}{dd}

在批处理文件中使用它并将结果存储在dt变量

call getTimeStamp -oh +7 -f {yyyy}{mm}{dd} -r dt

如果您知道所需的时区(相对于GMT),则可以指定时区偏移量而不是当地时间的偏移量。我相信亚速尔群岛是GMT - 60分钟,所以你可以使用:

call getTimeStamp -z -60 -f {yyyy}{mm}{dd} -r dt

答案 1 :(得分:1)

这适用于批处理文件中的VBS脚本。

  @echo off
  set TmpFile="%temp%.\tmp.vbs"
  echo> %TmpFile% n=Now
  echo>>%TmpFile% s=DateAdd("h", 7, n)
  echo>>%TmpFile% Wscript.Echo "set plus7=" ^& s
  cscript //nologo "%temp%.\tmp.vbs" > "%temp%.\tmp.bat"
  call "%temp%.\tmp.bat"
  del  "%temp%.\tmp.bat"
  del  %TmpFile%
  set TmpFile=
  set "stamp=%plus7:~6,4%-%plus7:~3,2%-%plus7:~0,2%.%plus7:~11,2%_%plus7:~14,2%_%plus7:~17,2%"

  echo "%plus7%"  
  echo "%stamp%"  


  pause