Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 明天的日期是前导零吗?_Date_Batch File - Fatal编程技术网

Date 明天的日期是前导零吗?

Date 明天的日期是前导零吗?,date,batch-file,Date,Batch File,我希望有一个打印在一个DD/MM/YYYY格式明天日期的方法。我当前正在运行以下一组CMD: @echo off set /a d=%date:~0,2% set /a m=%date:~3,2% set /a y=%date:~6,4% :loop set /a d+=1 if %d% gtr 31 ( set d=1 set /a m+=1 if %m% gtr 12 ( set m=1 set /

我希望有一个打印在一个DD/MM/YYYY格式明天日期的方法。我当前正在运行以下一组CMD:

@echo off

set /a d=%date:~0,2%
set /a m=%date:~3,2%
set /a y=%date:~6,4%


:loop
   set /a d+=1

   if %d% gtr 31 (
      set d=1
      set /a m+=1

      if %m% gtr 12 (
         set m=1
         set /a y+=1
      )
   )

xcopy /d:%m%-%d%-%y% /h /l "%~f0" "%~f0\" >nul 2>&1 || goto loop
echo The date tomorrow is "%d%/%m%/%y%".

pause
上面的工作很好,打印“明天是”8/12/2012。但是,我需要我的日和月值在小于10时以前导零显示。我似乎不知道如何才能做到这一点。有人能帮我吗

干杯


EL

Opps.我想我刚刚通过添加以下内容解决了自己的问题:

IF 1%d% LSS 100 SET d=0%d%
IF 1%m% LSS 100 SET m=0%m%
在xcopy之前。所以现在应该是:

@echo off

set /a d=%date:~0,2%
set /a m=%date:~3,2%
set /a y=%date:~6,4%

:loop
   set /a d+=1

   if %d% gtr 31 (
      set d=1
      set /a m+=1

      if %m% gtr 12 (
         set m=1
         set /a y+=1
      )
   )

IF 1%d% LSS 100 SET d=0%d%
IF 1%m% LSS 100 SET m=0%m%
xcopy /d:%m%-%d%-%y% /h /l "%~f0" "%~f0\" >nul 2>&1 || goto loop
echo The date tomorrow is "%d%/%m%/%y%".

pause

希望这能帮助任何有类似问题的人:)

我测试了你的代码……它不起作用 下面是批处理代码的适当部分,可以满足您的需要

:getdate
set /a day=%date:~7,2%
IF %day% LSS 10 set day=0%day%
rem echo.The day is - %day%

set /a month=%date:~4,2%
IF %month% LSS 10 set month=0%month%
rem echo.The month is - %month%

set /a year=%date:~10,4%
rem echo.The year is - %year%

REM Setting Month / Days
set jan=31
set feb=28
set mar=31
set apr=30
set may=31
set jun=30
set jul=31
set aug=31
set sep=30
set oct=31
set nov=30
set dec=31

REM If Months are # set Month to Days
IF %month% EQU 1 set mon=%jan%
IF %month% EQU 2 set mon=%feb%
IF %month% EQU 3 set mon=%mar%
IF %month% EQU 4 set mon=%apr%
IF %month% EQU 5 set mon=%may%
IF %month% EQU 6 set mon=%jun%
IF %month% EQU 7 set mon=%jul%
IF %month% EQU 8 set mon=%aug%
IF %month% EQU 9 set mon=%sep%
IF %month% EQU 10 set mon=%oct%
IF %month% EQU 11 set mon=%nov%
IF %month% EQU 12 set mon=%dec%

echo.Today's Date is %month%/%day%/%year%

set /a day+=1
if %day% GTR %mon% set /a month+=1
if %day% GTR %mon% set day=1
IF %day% LSS 10 set day=0%day%
IF %month% GTR 12 set month=1& set /a year+=1
IF %month% LSS 10 set month=0%month%

echo.Tomorrow's Date is %month%/%day%/%year%
这将设置一个月内的天数(闰年除外),并且应该可以解决您遇到的任何问题,假设您还不知道这一点,但是如果一个月只有30天,那么您当前的代码将把日期设置为31天,而不管是2月还是只有28天

您必须在这里插入其他代码,因为我不确定您的循环在做什么,否则我只是更改了d=day、m=month和y=year(mon是比较月份中的天数)


祝你好运,HTH

你为日/月/年的集合获取了错误的信息。 这是正确的一套

set /a d=%date:~7,2%
set /a m=%date:~4,2%
set /a y=%date:~10,4%

通过以下步骤,您应该能够轻松地找出哪些变量会流向何处:

@echo off

:testing
set /a a=%date:~0,1%
set /a b=%date:~1,1%
set /a c=%date:~2,1%
set /a d=%date:~3,1%
set /a e=%date:~4,1%
set /a f=%date:~5,1%
set /a g=%date:~6,1%
set /a h=date:~7,1%
set /a i=%date:~8,1%
set /a j=%date:~9,1%
set /a k=%date:~10,1%
set /a l=%date:~11,1%
set /a m=%date:~12,1%
set /a n=%date:~13,1%

echo.%a%-a
echo.%b%-b
echo.%c%-c
echo.%d%-d
echo.%e%-e
echo.%f%-f
echo.%g%-g
echo.%h%-h
echo.%i%-i
echo.%j%-j
echo.%k%-k
echo.%l%-l
echo.%m%-m
echo.%n%-n
然后当你得到你想要的第一个值时

set /a var=%date:~NUM1,NUM2%
其中NUM1是起始NUM2是要向右移动的字符数,VAR是要将其设置为的变量

或者,使用FOR语句可能会更好

我看到有人提到用户可能来自欧盟或英国。如果是这种情况,他们的日期设置将是(用于):


我相信你愚弄了自己。月份可以有28天、29天、30天或31天。你的代码假设所有月份都有31天。一个好的解决方案是将日期转换为朱利安日期,加上1,然后转换回公历日期。看。这可能取决于地区。我想这是真的,根据他如何设置他的日期/月份,他似乎是英国人或欧洲人hs/年不同于美国的月/日/年。打得好
@ECHO OFF
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
set day=%dd%
set /a day+=01
SET date=%day%/%mm%/%yyyy%
echo.%date%
pause