Date 根据天数计算日期

Date 根据天数计算日期,date,batch-file,cmd,Date,Batch File,Cmd,我肯定这是可能的,但我不知道从哪里开始 我需要能够根据一个数字计算出日期。这个数字是连续的,每天会增加一个。因此,我可以尽可能使数字与一年中某一天的数字相关(即1月1日将是第1天等),但我需要能够以ddmmyyyy格式计算出任何给定数字的日期 P>有类似的问题我发现与C++和java脚本…< /P>有关 这可以在CMD中完成吗 编辑 我刚刚意识到,日期将根据年份(即闰年)而变化 对于我的脚本来说,年份总是2012年,因此我需要能够根据序号(我认为这是正确的描述方式)计算出日期,仅限2012年。

我肯定这是可能的,但我不知道从哪里开始

我需要能够根据一个数字计算出日期。这个数字是连续的,每天会增加一个。因此,我可以尽可能使数字与一年中某一天的数字相关(即1月1日将是第1天等),但我需要能够以ddmmyyyy格式计算出任何给定数字的日期

<> P>有类似的问题我发现与C++和java脚本…< /P>有关 这可以在CMD中完成吗

编辑

我刚刚意识到,日期将根据年份(即闰年)而变化


对于我的脚本来说,年份总是2012年,因此我需要能够根据序号(我认为这是正确的描述方式)计算出日期,仅限2012年。

下面的代码从当前日期获取日期。当然,把它改成固定年份很容易

我很想说这是我自己写的,但它是基于。看看这个网站。它有很多日期计算功能,所有这些功能都被隔离在单独的脚本中,而不是我用它制作的固定用途的混乱


那么你也需要这一年。如果第一天是1月1日,那么第400天将是什么?我已经编辑了这个问题,因为我忘了提到它将永远是2012年。。。不会有任何数字高于360,除非文件本身是错误的,在这种情况下,它们必须手动编辑…好的,我在看到你的评论之前就开始研究我的答案。现在它使用的是当前年份,但是您可以很容易地将其修复,这样会更安全,因为我介绍的方法依赖于
%DATE%
显示日期的格式,该格式取决于区域设置。如果年份不是最后4个字符,那么我的代码将失败。非常感谢。为了让它按我所需要的方式工作,我做了一些小的调整(主要是用一个简单的“如果小于10,前缀为0”来修复一位数的天数和月份),这似乎很完美。
@echo off
:: Input: The number of days to add. You can make this a parameter 
:: too, if you want.
SET /A Days   = 20
echo %DATE:~-4%

:: Get 1 january of the current year
SET /A Year1  = %DATE:~-4% + 4800
SET MM=1
SET DD=1

:: Calculate the Julian date of that date.
SET /A Month1 = ( %MM% - 14 ) / 12
SET /A JDate  = 1461 * ( %Year1% + %Month1% ) / 4 + 367 * ( %MM% - 2 -12 * %Month1% ) / 12 - ( 3 * ( ( %Year1% + %Month1% + 100 ) / 100 ) ) / 4 + %DD% - 32075

:: Add the number of days
SET /A JDate  = %JDate% + %Days%

:: Calculate it back to year, month and day.
SET /A P      = %JDate% + 68569
SET /A Q      = 4 * %P% / 146097
SET /A R      = %P% - ( 146097 * %Q% +3 ) / 4
SET /A S      = 4000 * ( %R% + 1 ) / 1461001
SET /A T      = %R% - 1461 * %S% / 4 + 31
SET /A U      = 80 * %T% / 2447
SET /A V      = %U% / 11

:: SET /A GYear  = 100 * ( %Q% - 49 ) + %S% + %V%
SET /A GMonth = %U% + 2 - 12 * %V%
SET /A GDay   = %T% - 2447 * %U% / 80

:: Echo only month and day
echo %GMonth% %GDay%

:: Clean-up
FOR %%A IN (P Q R S T U V MM  DD JDate Year1 GDay GMonth GYear) DO SET %%A=