• 締切済み

曜日計算

 日数計算の数式の次の部分が解らないのですけど教えて、いただけませんか。  ((13*m)+8)/5----------( m =月)  13 、 8 、 5 は、どこからでてきたのですか。0256

  • 0256
  • お礼率54% (13/24)

みんなの回答

  • chie65535
  • ベストアンサー率43% (8514/19356)
回答No.4

因みに「どうして3月1日を基準にした式で計算する」のかと言うと「2月が28日だったり29日だったりして、面倒臭いから」です。 「3月が頭」つまり「2月が一番最後」だと「2月が何日まであるか気にしなくて良くなる」のです。

0256
質問者

お礼

丁寧なご回答ありがとうございました。 私にとっては、大変難しいのですけど頑張ります。今後ともよろしくお願いいたします。 0256

  • chie65535
  • ベストアンサー率43% (8514/19356)
回答No.3

13、8、5が出て来る「おおもと」は「3月1日からm-1月末日までの日数を求める式」です。 「3月1日からm-1月末日までの日数」は [ 306 ( m + 1 ) / 10 ] - 122 と言う式で計算できます。ガウス記号[]は「割り算の商」を意味します。コンピュータ的には「小数点以下を切り捨てるint()関数の戻り値」です。 月の日数は「31日の大の月」と「30日の小の月」とが2ヶ月ごとに繰り返すので「2ヶ月で61日」です。 言い換えれば「10ヶ月で305日」です。 なので「305倍して10で割った商」、つまり [ 305 ( m + 1 ) / 10 ] を計算すると「31日と30日が繰り返す場合の、おおよその日数の基本の値」が求まります。 このままでは「7月と8月で31日が連続する部分」で1日ずれるので [ 306 ( m + 1 ) / 10 ] と言う調整をします。305を306にすることで「7月と8月で31日が連続する」ようになります。 このままでは「122大きい値になってしまう」ので、最後に122を引きます。 [ 306 ( m + 1 ) / 10 ] - 122 この式を元に「西暦1年1月1日からy年m月d日までの日数」を求めます。 元の式が3月1日が起点なので、1月の31日、2月の28日を足して、うるう年の足し算引き算をすると、西暦1年1月1日からy年m月d日までの日数を表す式は h = 31 + 28 + 365 ( y - 1 ) + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [ 306 ( m + 1 ) / 10 ] - 122 + d という式になります。 曜日は7日周期ですから「上記の式を7で割った余り」を求めると「0~6の曜日を表す数値」になります。 h = ( 31 + 28 + 365 ( y - 1 ) + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [ 306 ( m + 1 ) / 10 ] - 122 + d ) mod 7 上記式の一部の「365 ( y - 1 )」は 365 ( y - 1 ) = 356y - 365 ですから h = ( 31 + 28 + 365y - 365 + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [ 306 ( m + 1 ) / 10 ] - 122 + d ) mod 7 と言う式になります。定数項を集めると h = ( 365y + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [ 306 ( m + 1 ) / 10 ] + d - 122 + 31 + 28 - 365 ) mod 7 になります。 定数項を整理すると -122 + 31 + 28 - 365 = -428 ですから h = (365y + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [306(m + 1) / 10] + d - 428 ) mod 7 と言う式になります。「306 ( m + 1 ) / 10」は2で通分しておきます。 h = (365y + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [153(m + 1) / 5] + d - 428 ) mod 7 式は「7で割った余り」を求めるのですから「7の倍数」は消す事ができます。 365y - 428 = ( 7 * 52 + 1 )y - 7 * 62 + 6 = 7 * 52 y + y - 7 * 62 + 6 = 7 * 52 y - 7 * 62 + y + 6 = 7 (52 y - 62 ) + y + 6 と言う変形が出来ますから、式は h = ( 7 ( 52 y - 62) + y + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [ 153 ( m + 1 ) / 5 ] + 6 + d ) mod 7 に変形できます。7の倍数は消せるので h = ( y + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [ 153 ( m + 1 ) / 5 ] + 6 + d ) mod 7 になります。 上記の式の「[ 153 ( m + 1 ) / 5 ] + 6」の部分を変形します。 [ 153 ( m + 1 ) / 5 ] + 6 =[ 153 ( m + 1 ) / 5 + 6] =[ (153m + 153 ) / 5 + 6] =[ (153m + 153 ) / 5 + 30 / 5] =[ (153m + 153 + 30) / 5] =[ ((140 + 13)m + 183 ) / 5] =[ ((140 + 13)m + 175 + 8 ) / 5] =[ (140m + 13m + 175 + 8 ) / 5] =[ 140m / 5 + 13m / 5 + 175 / 5 + 8 / 5] =[ 28m + (13 / 5)m + 35 + 8 / 5] =[ (13 / 5)m + 28m + 35 + 8 / 5] =[ (13 / 5)m + 7(4m + 5) + 8 / 5] =[ (13 / 5)m + 8 / 5 + 7(4m + 5)] =[ 13m / 5 + 8 / 5 + 7(4m + 5)] =[ (13m + 8) / 5 + 7(4m + 5)] =[ (13m + 8) / 5] + 7(4m + 5) 元の式に当てはめる際、7の倍数は消せるので h = ( y + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [ (13m + 8) / 5] + d ) mod 7 になります。 変形を繰り返すと、13、8、5が出てきました。 今の高速なコンピュータで計算するなら h = (31 + 28 + 365 ( y - 1 ) + [ y / 4 ] - [ y / 100 ] + [ y / 400 ] + [ 306 ( m + 1 ) / 10 ] - 122 + d) mod 7 のままでも構いません。 式を変形して簡単にするのは「人間が暗算などで計算し易くするため」や「大昔の遅い電算機や電卓で計算する際に高速化したいから」です。

noname#235638
noname#235638
回答No.2

http://tancro.e-central.tv/cgi-bin/subZeller.cgi このページは、どうでしょう?

0256
質問者

お礼

ありがとうございました。 私には、とても難しいですけど、読んでみます。0256

  • chie65535
  • ベストアンサー率43% (8514/19356)
回答No.1
0256
質問者

お礼

 ありがとうございました。 このサイトは 見たのですけど理解できないのです。0256

関連するQ&A

  • エクセル日数計算後数式を確認したら文字に変わる

    ◇使用ツール エクセル2013 ◇問題点 或る時期から、ある時期までの日数を計算する場合に使用する数式が、一旦は正規に表示されますが、確認のためダブルクリックして数式を見た後、エンターキーを押すと数式の「文字」のみが黒色で表示され、肝心の計算結果が表示されなくなるという不具合があります。入力した数式がダブルクリックしても正規に表示される対策を教えて下さい。 例 2011年6月4日~7月21日までの日数を計算する場合 次の通り数式を入力します L5=2011/6/4 L6=2011/7/25 M6に日数を表示させます M6=SUM(L6-L5+1)の計算結果が「52」と表示される。 その後M6をダブルクリックして数式を確認する。52と色付きで表示されている事を確認出来る。ここでエンターを押す。結果=SUM(L6-L+1)と文字のみが表示される。本来52と表示されなければならない。

  • 【Excel97】経過日数の計算で、土日・祝日を抜かして計算したい

    表記のとおりです。 「○○月○○日~○○月○○日」という日数計算を出してくて、今はただ引き算で経過日数を出してるだけなんです。そうすると必要のない土日や祝日も入ってしまうので、それを除いた経過日数を出す関数はどのようにすればいいのでしょうか。 私は関数にはうとくて、「こういう数式にすれば」また「こういう表示形式にすれば」と具体的に教えていただけれると嬉しいです。

  • エクセルで月数の計算2

    例えばA1に開始日、A2に終了日、A3に数式を設定して月数を計算します。月数は暦に従って計算し、ひと月未満の端数はひと月として計算します。この場合、初日を算入(計算の対象に入れる)して計算する場合、下記の数式のどこを修正すべきでしょうか? =IF(DATEDIF(A1,A2,"MD")=0,DATEDIF(A1,A2,"M"),DATEDIF(A1,A2,"M")+1)

  • エクセルで日割り計算を行うには?

    エクセルで次のような日割り計算を行いたいのですが、良い関数や方法、ツールがないか教えてください。 例えば、携帯電話のプラン変更を行い、月額20,000円のプランから、10月10日以降は月額10,000円になりました。 計算式でいくと((旧月額費用÷月の日数)×切替前日までの日数)+((新月額費用÷月の日数)×切替から月末までの日数)で算出できると思います。 これらを簡単に計算できる関数やツールがあれば是非教えてください!

  • 【Excel】日付の計算教えてください!!

    いつもお世話になります。 A1に060928 (2006年9月28日) A2に061010 (2006年10月10日) と入っています。 A1からA2までの日数を計算で出したいのですが、どうすればいいんでしょう? この場合は13という答えを望んでいます。 頭のいい方、教えてください。m(._.*)mペコッ よろしくお願いします。

  • Excel 日数計算について

    Excelの日数計算について質問です。 H18.9.20(A2)からH19.2.22(B2)の期間を月数と残りの日数で表示すると =DATEDIF(A2,B2,"M")&"月" =DATEDIF(A2,B2,"MD")&"日" ここまでは何とかできましたが、 上記期間の1/2、及び1/3の月数と残日数を整数(端数は切捨て)で表示するにはどのような式が必要でしょうか? 月数は=DATEDIF(A2,B2,"M")で求めた月を1ヶ月30日で計算します。 よろしくご指導お願いします。

  • エクセルの%の計算方法について

    計算方法ですが、 たとえば100のものを90%にして90。というところまでは計算できるのですが その、90を次に100%に戻して100という答えがほしい場合どう計算すればいいでしょうか? また、エクセルに入力したいのでエクセルの数式を教えてもらえるとありがたいです。

  • 簿記 日数計算

    日数計算の方法を教えてください。 手をグーにして、人差し指が31日、それ以降こぶしの部分が31でへこんでいるところが30日とならいました。 しかし、簿記の試験で10月1日~2月23日までの計算で答えが146日となり、教わった方法だと145日になってしまいます。 数え方がおかしいのでしょうか?よろしくお願いします。

  • 基本給の日割り計算

    10月14日に、「10月いっぱいで解雇」となりました。 給与の締め日が20日です。 11月の14日までの給与が振り込まれる事になりました。 その日割り計算について質問です。 仮に月給制で基本給20万円だったとします。 10月21日から11月20日まで働いていたとすると、20日間の就業日数があったことになります。 これが、11月14日までとなった場合、16日間の就業日数となります。 この場合、支払われるべき基本給は単純計算で 20万円 ÷ 20日 × 16日 = 16万円 とはならないのでしょうか? 実際の明細では基本給の部分が低かったので気になっています。

  • エクセルでの計算式

    エクセルを使用して 計算式を入れたいのですが 例えば セルA(2500)×セルB(8)=20000と出るのは 解るのですが これを 20に直す方法 ありますか? 簡単に言いますと2500mm×8枚といった感じで20mという 数式にしたいのですが。 よろしくお願いいたします