我需要在将来获得7小时的日期戳。
我目前有一个解决方案,但它需要更改系统日期,这并不理想。有没有人知道如何在不改变时区的情况下做到这一点?
当前方法(我的时区是PST,亚速尔群岛是+ 7小时):
tzutil /s "Azores Standard Time"
echo %DATE:~-4%%DATE:~4,2%%DATE:~7,2%
tzutil /s "Pacific Standard Time"
答案 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