すべてのカテゴリ » インターネット・パソコン » 技術・プログラミング

質問

終了

一年の中で現在の日付が何日目に当たるのか計算できる方程式って無いですか?
うるう年も考えたものもあるとありがたいです。
例)1月1日なら1日目
  12月31日なら365(366)日目

  • 質問者:困ってます
  • 質問日時:2008-10-02 21:11:17
  • 0

月ごとに計算式を切り替えれば、比較的簡単かと思います。
1月なら 0 + 日数
2月なら 31 + 日数
3月なら 31 + 29 + 日数
4月なら 31 + 29 + 31 + 日数
・・・
と言った感じでしょうか。
(うるう年で3月以降なら調整が必要ですが)

  • 回答者:Maku (質問から4時間後)
  • 2
この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。
お礼コメント

これが一番やりやすそうだったのでこれにしました。
ほかの皆さんも、本当にありがとうございました!

並び替え:

うるう年などを考慮すると、非常に複雑な方程式になると思います。

他の方も書いておられるように、EXCELで「Time関数」を使えば簡単ですし、その関数を解析していけば、方程式は出来ると思います。

ですが、方程式にこだわらなければ、カレンダーから「足し算」だけで日数を計算できるので、100年カレンダー(1年だけなら今年のカレンダー)などを用意し手計算のほうが間違いもなく、早く計算できるのではないかと思います。

お望みの回答にならないですみません。

追記
暗記さんの回答、
0,1,-1,0,0,1,1,2,3,3,4,4
は1月から12月に応じた「上記数字」に当たるものと思われます。
例)12月31日では、(12-1)×30+31+4=365
  2月29日なら  (2-1)×30+29+1=60 となります。
暗記さんの説明を私がしてしまって、暗記さん申し訳ありません。うるう年も見事にクリアーされていて1年だけなら非常に良い方法だと思います。
(うるう年は、3月以降の日数計算は、3月以降の数字には各々1を加えたものにするのですよね)
0,1,0,1,1,2,2,3,4,4,5,5 (うるう年用)
私も大変勉強になりました。
----------------------------------------------
再追記
Makuさんのご提案を「すばらしい」と思いました。(拍手1票を入れました)
そこでさらに改良型(?)を
以下「計算する日付」を「D」とします。
計算する月(x)を「M(x)」とします。例;1月ならx=1で、M(1)、5月ならx=5で、M(5)と表します。
M(x)は各月ごとにそれまでに経過した累計した日数(定数)が入ります。

M(1)=0、M(2)=31、M(3)=59、M(4)=90、M(5)=120、M(6)=151、M(7)=181、M(8)=212、M(9)=243、M(10)=273、M(11)=304、M(12)=334
*****
今日が何日目か

T=M(x)+D (+1)(うるう年の場合で3月以降X>=3の場合)

と方程式風に表記してみました。

なんのことはない、先月までの累計日数に計算する日付を足しただけです。
T=∑(先月までの累計日数)+D、で∑の項を定数化しただけです。
Makuさんマネッコしてごめんなさい。
なお、グレゴリア暦による方法を取れば、過去、将来の日数も計算できると思われますが、本質門の趣旨と異なるので省略しました。

----------------------------------------------
(うるう年・・・を付け加えました)(「類型」を「累計」に直しました) ( 「現在の日付」を「計算する日付」に変えました。X>=3を付け加えました。たびたびですみません) (なお、グレオリア暦による・・・を追加しました)

この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。

エクセルでいいのでしょうか。
エクセルでは1900年1月1日とセルに入れます。
これを書式の設定で標準にしますと1となります。
これはこの日から何日目かというのを表示してくれます。
このセルは消しても良いです。
次に昨年の2007年12月31日と別のセルに入れます。
これを同じように書式の設定で標準にしますと39447となります。
次に例えば2008年1月1日と入れます。この入力は2008/1/1でも何でも良いです。
これから前の39447を引く式を別のセルに入れます。(=入力する場所のセル記号番号-39447となっているセル)
答えは1となります。
ゆえに、任意に入力すると今年の初めから何日目かがわかります。
年が変わると、今まで入力してきた2007年12月31日の変わりに2008年12月31日と入力しておけば良いです。
こんなもんでいかがでしょう。

  • 回答者:maayan (質問から2時間後)
  • 0
この回答の満足度
  
参考になりました。回答ありがとうございました。

まず少し暗記が必要です。
1,3,5,7,8,10,12
前半夏までが奇数、後半三つは偶数。これが31日まである月です。
それをふまえ、
0,1,-1,0,0,1,1,2,3,3,4,4
前三つ01-1で、あとは0~4まで真ん中の2だけ一つ他は二つです。
これを覚えれば、
(月-1)×30+日+上記数字
で答えが出ます。
上記の数字だけなんとか暗記してください。

  • 回答者:暗記 (質問から29分後)
  • 3
この回答の満足度
  
参考になり、満足しました。回答ありがとうございました。
お礼コメント

すいませんが、0,1,-1・・・・は何を表しているのでしょうか?脳みそが足りなくて申し訳ありません・・・

http://hp.vector.co.jp/authors/VA014370/jscript/datecalc/dcalc.htm

これの日付を2008年1月1日にして算出してはダメですか。

スクリプトが組めるって事はなにがしかの方程式があるんだとは思いますが。

  • 回答者:匿名希望 (質問から10分後)
  • 0
この回答の満足度
  
参考になりました。回答ありがとうございました。
お礼コメント

すいません考え方はこれであっているのですが、自分で使えるような"方程式"がほしいのです。分かりにくい質問ですいませんでした。

ご質問の意図を踏まえた
手帳が発売されております。

日付の項目ごとに
経過日数と
残り日数が併記されております。

1月1日のページは
1日目(残り364日)と記載されております

この回答の満足度
  
参考になりました。回答ありがとうございました。
お礼コメント

早速のご回答ありがとうございます。ですが今回は求め方が知りたいのです。分かりにくい説明で申し訳ありませんでした。

関連する質問・相談

Sooda!からのお知らせ

一覧を見る