如何获取特定格式的昨天的日期?

时间:2019-04-26 06:44:30

标签: datetime batch-file cmd datetime-format

我需要以固定格式YYYYMMDD设置变量中的今天和昨天的日期。

对于今天,我什么时候

ERROR: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-ihlh4pr0/rpy2/

它正常工作并显示“ 20190426”。 但是如何设置昨天的日期,以便我以'20190425'的格式获取它?

4 个答案:

答案 0 :(得分:1)

要获取昨天的日期:

$ date +%Y%m%d --date yesterday
20190425

要将其放入var中:

$ var=$(date +%Y%m%d --date yesterday)
$ echo $var
20190425

更新交易到,该解决方案不适用于该解决方案。

答案 1 :(得分:0)

您可以使用此批处理/ vbs混合,需要将其另存为.bat.cmd扩展文件。

@echo off
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "yyyy=%result:~0,4%"
set "mm=%result:~4,2%"
set "dd=%result:~6,2%"
set "final=%yyyy%%mm%%dd%"
echo %final%

请注意,您可以在set day=-1行中切换天数。

答案 2 :(得分:0)

[SO]上确实有成百上千个问题
https://www.google.com/search?q=site%3Astackoverflow.com+batch+yesterday

我建议为此使用PowerShell一层衬里,并用cmd线包裹

for /f "usebackq delims=" %A in (`powershell -NoP -C "'yesterday={0:yyyyMMdd}' -f (Get-Date).AddDays(-1);'today={0:yyyyMMdd}' -f (Get-Date)"`) do set "%A"

或批处理文件

@Echo off
for /f "usebackq delims=" %%A in (`
    powershell -NoP -C "'yesterday={0:yyyyMMdd}' -f (Get-Date).AddDays(-1);'today={0:yyyyMMdd}' -f (Get-Date)"
`) do set "%%A"

答案 3 :(得分:0)

以前发布的答案不是纯粹的批处理文件解决方案...您可以使用this answer中说明的方法,也可以仅使用this simpler approach

@echo off
setlocal

set /A "YYYY=%date:~10,4%, MM=1%date:~4,2%, M=MM-100, DD=1%date:~7,2%, D=DD-100"
echo TODAY: %YYYY%%MM:~1%%DD:~1%

set /A "C1=!(D-=1),M-=C1*(1-12*(C2=!(M-1))),YYYY-=C1*C2,MM=100+M,DD=100+(D+=C1*(30+((M+(M>>3))&1)-!(M-2)*(2-!(YYYY%%4))))"
echo YESTERDAY: %YYYY%%MM:~1%%DD:~1%