0

これは可能だと思いますが、どこから始めればいいのかわかりません。

数字に基づいて日付を計算できるようにする必要があります。数は連続しており、毎日1つずつ増加します。そのため、その年の日の数に関連する数を取得するためにできる限りのことを行うことができます(つまり、1月1日は1日目など)。ただし、ddmmyyyy形式で日付を計算できる必要があります。与えられた数。

C++とJavaスクリプトに関して私が見つけた同様の質問があります...

これはCMDで実行できますか?

編集

年によって日付が変わることに気づきました(つまり、leapyears)

私のスクリプトでは、年は常に2012年になるため、2012年のみ、序数(それを説明する正しい方法だと思います)の日に基づいて日付を計算できる必要があります。

4

1 に答える 1

2

以下のコードは、現在の日付から日付を取得します。もちろん、固定年に変更するのは簡単です。

私はこれをすべて自分で書いたと言いたいのですが、それはRob vanderWoudeによるコードに基づいています。サイトをご覧ください。それは私がそれから作った固定目的の混乱の代わりにそれらのすべてが別々のスクリプトに分離されたたくさんの日付計算関数を持っています。;)

@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=
于 2012-12-19T00:04:02.370 に答える