根据天数计算日期

Posted

技术标签:

【中文标题】根据天数计算日期【英文标题】:Working out the date based on the day number 【发布时间】:2012-12-18 23:26:25 【问题描述】:

我确信这一定是可能的,但我不知道从哪里开始。

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

我发现了与 C++ 和 Java Script 相关的类似问题...

这可以在 CMD 中完成吗?

编辑

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

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

【问题讨论】:

那么你也需要年份。如果第 1 天是 1 月 1 日,那么第 400 天会是什么? 我已经编辑了这个问题,因为我忘了提到它永远是 2012... 不会有任何高于 360 的数字,除非文件本身是错误的,在这种情况下他们'必须手动编辑... 好的,在看到您的评论之前,我已经开始着手解决问题了。它现在使用当前年份,但您可以轻松地将其修复,这样会更安全,因为我提出的方法依赖于 %DATE% 显示日期的格式,这取决于语言环境。如果年份不是最后 4 个字符,那么我的代码将失败。 【参考方案1】:

下面的代码从当前日期获取日期。当然,很容易将其更改为固定年份。

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

@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=

【讨论】:

非常感谢。一些小的调整让它按照我的需要工作(主要是用一个简单的'如果小于 10 前缀和 0'来修复个位数的日期和月份,这似乎很完美。

以上是关于根据天数计算日期的主要内容,如果未能解决你的问题,请参考以下文章

Excel中计算两个日期之间的天数,扣除周六周日

excel表格日期计算天数

PHP日期操作类代码-农历-阳历转换闰年计算天数等

PHP日期操作类代码-农历-阳历转换闰年计算天数等

Pandas - 如何根据自定义日历计算两个日期之间的天数[关闭]

excel表格怎么算日期天数