2012-12-18 4 views
0

이것이 가능해야한다고 확신하지만 어디서부터 시작해야할지 모르겠습니다.날짜를 기준으로 날짜 계산하기

숫자를 기준으로 날짜를 계산할 수 있어야합니다. 번호는 순차적이며 매일 1 씩 증가합니다. 그래서 나는 그날의 숫자와 관련된 숫자를 얻는만큼 많은 일을 할 수 있습니다. (즉, 1 월 1 일이 하루 1 일 것입니다.) 그러나 나는 ddmmyyyy 형식으로 날짜를 계산할 수 있어야합니다. 주어진 번호.

내가 C++에 관한 발견했습니다 비슷한 질문이 있습니다 자바 스크립트 ...

이는 CMD에서 수행 할 수 있습니까?

편집

난 그냥 날짜 (예 : leapyears) 내 스크립트에 대한

년에 따라 변경됩니다, 올해는 항상 2,012 될 것이라고 깨달았다, 내가 할 수 있어야합니다 서문에 기반한 날짜를 계산하려면 2012 년에만 서술하십시오.

+0

다음 연도도 필요합니다. 1 일째가 1 월 1 일이면 400 일은 무엇입니까? – GolezTrol

+0

나는 그것이 2012 년이라고 말할 것을 잊어 버렸기 때문에 질문을 편집했습니다 ... 파일 자체가 틀린 것이 아니라면 360을 넘는 숫자는 없을 것입니다. 어떤 경우에는 수동으로 편집해야합니다. .. –

+0

좋아요, 나는 당신의 의견을보기 전에 내 대답에 대한 작업을 시작했습니다. 현재 연도를 사용하지만,이 방법을 사용하면 쉽게 해결할 수 있습니다. 더 안전한 방법입니다. 왜냐하면 필자가 제시 한 방법은 '% DATE %'에 로케일에 따라 날짜를 나타내는 형식을 사용하기 때문입니다. 연도가 마지막 4 문자가 아니면 내 코드가 실패합니다. – GolezTrol

답변

2

아래 코드는 현재 날짜의 날짜를 가져옵니다. 물론 고정 년도로 변경하는 것은 쉽습니다.

나는이 모든 것을 직접 작성했다고 말하고 싶지만, 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= 
+0

고마워요. 약간의 비틀기 몇 개가 필요한 방식으로 작동하도록했습니다. (주로 10 자리수의 접두어가 0 인 경우 간단히 한자리 숫자로 된 달과 월을 수정하여 완벽하게 보입니다. –

관련 문제