今日のテーマ   日々改造 (^_^;)         
[記事リスト(ツリー表示)]  [ 返信 ]   [新着記事] [最新50] [ワード検索] [過去ログ]

タイトル 曜日を算出する ツェラーの式
投稿日: 2023/11/23(木) 14:38
投稿者konno
 番 号 10949    10946 番 konno さんへのコメント

新祝日法対応のためには指定した曜日を計算して特定する必要があります。
私の頭では全く思いつきません。(;_;)
困ったときのめざら資源、探したらありました! \(^^)/ アッタ-
めざら資源>VZマクロ工房>文字列出力関連>七曜でふ−簡易版日付印字器

sitiyo.def
3:	;指定日の曜日を算出(ツェラーの式)
	(m<3)?{ y--, m+=12, }
	w=((y+ y/4+ y/400+ (m*13+8)/5+ 1- y/100) +d -1) %7,

なるほど、指定日の曜日を算出する、ツェラーの式というのがあるのですね。
マクロをBASICに置き換えてみました。式はほぼそのままですね。

'a1=1〜4(週)	
'a2=1〜7(曜日)
ww=0
for d=1 to 31
if m<3 then y=y-1:m=m+12
w=((y+ y/4+ y/400+ (m*13+8)/5+ 1- y/100) +d -1) mod 7
if w=a2 then ww=ww+1
if ww=a1 then dd=d:goto 30612
next d
30612 return


実際に実装したルーチンも貼り付けます。

30611 '指定日の曜日を算出(ツェラーの式)
AA1=ASC(MID$(A$,4,1))-64					'1〜4(週)	
AA2=ASC(MID$(A$,5,1))-64					'1〜7(曜日)
WW9=0
M9=YASM(YMAX)							'該当祝日の月
Y9=YEAR								'該当祝日の年
for D9=1 to 31
  if M9<3 then Y9=Y9-1:M9=M9+12					'sitiyo.def
  W9=((Y9+ Y9/4+ Y9/400+ (M9*13+8)/5+ 1- Y9/100) +D9 -1) MOD 7	'ツェラーの式
  'W9=(Y9+ Y9/4+ Y9/400+ (M9*13+8)/5+ D9- Y9/100) MOD 7		'同等の式?
  if W9<>AA2 then 30613						'曜日が一致するまで日を進める
  WW9=WW9+1							'曜日が一致したら週を進める
  if WW9<AA1 then 30613						'週が一致するまで進める
  YASD(YMAX)=D9:goto 30614					'日が確定したらデータに入れる
30613 next D9
30614 'print co9;a$;" ";Y9;M9;AA1;AA2;W9;D9			'debug
return


コメントを書くとフローのミスにも気が付きやすいですね。(^^;
一応動くようになったのですが、何故か年を変えても今年の年で計算してしまいます。(>_<)
どうしよう・・・

続く・・・のか

    - No.10949 一括表示へ   -   コメント元:10946 一括表示へ  -    [ 返信 ]    [引用無し] pre


- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
10933.VGAで動くアナログ時計とカレンダのアクセサリ - konno 23/11/17-00:36
  ┣10934.Re: VGAで動くアナログ時計とカレンダのアクセサリ 差替え - konno 23/11/18-21:16
  ┃┗10935.Re^2: VGAで動くアナログ時計とカレンダのアクセサリ 差替え - 文太 23/11/18-22:01
  ┃ ┗10936.Re^3: VGAで動くアナログ時計とカレンダのアクセサリ 差替え - konno 23/11/18-23:05
  ┃  ┣10938.Re^4: VGAで動くアナログ時計とカレンダのアクセサリ 差替え - 文太 23/11/18-23:31
  ┃  ┃┗10939.Re^5: VGAで動くアナログ時計とカレンダのアクセサリ 差替.. - konno 23/11/19-22:51
  ┃  ┃ ┗10940.Re^6: VGAで動くアナログ時計とカレンダのアクセサリ 差替.. - 文太 23/11/20-00:31
  ┃  ┃  ┣10941.Re^7: VGAで動くアナログ時計とカレンダのアクセサリ 差.. - konno 23/11/21-00:41
  ┃  ┃  ┗10942.Re^7: VGAで動くアナログ時計とカレンダのアクセサリ 差.. - としき 23/11/22-01:14
  ┃  ┃   ┗10944.BASIC道への入り口 - konno 23/11/22-23:55
  ┃  ┃    ┗10948.Re: BASIC道への入り口 - としき 23/11/23-14:07
  ┃  ┃     ┗10952.Re^2: BASIC道への入り口 - konno 23/11/23-19:54
  ┃  ┃      ┗10953.Re^3: BASIC道への入り口 - としき 23/11/24-20:35
  ┃  ┃       ┗10956.Re^4: BASIC道への入り口 - konno 23/11/25-15:36
  ┃  ┗10943.オセロ - としき 23/11/22-01:14
  ┃   ┗10945.Re: オセロ - konno 23/11/23-00:13
  ┃    ┗10947.Re^2: オセロ - としき 23/11/23-13:31
  ┃     ┣10950.Re^3: オセロ - めざら 23/11/23-17:10
  ┃     ┃┣10954.Re^4: オセロ - としき 23/11/24-20:35
  ┃     ┃┗10957.Re^4: オセロ - konno 23/11/25-15:57
  ┃     ┗10951.Re^3: オセロ - konno 23/11/23-19:43
  ┣10937.VGAで動くアナログ時計とカレンダのアクセサリの説明書 - konno 23/11/18-23:30
  ┣10946.新祝日対応のデータ形式 - konno 23/11/23-02:38
  ┃┣10949.曜日を算出する ツェラーの式 - konno 23/11/23-14:38
  ┃┗11093.Re: 新祝日対応のデータ形式 - めざら 24/02/17-13:33
  ┃ ┗11095.Re^2: 新祝日対応のデータ形式 - konno 24/02/18-21:38
  ┣10955.アナログ時計とカレンダのアクセサリ 11月24日版 - konno 23/11/24-22:13
  ┃┗10961.Re: アナログ時計とカレンダのアクセサリ 11月24日版 - としき 23/12/01-11:12
  ┃ ┣10962.Re^2: アナログ時計とカレンダのアクセサリ 11月24日版 - としき 23/12/01-11:25
  ┃ ┃┗10964.Re^3: アナログ時計とカレンダのアクセサリ 11月24日版 - konno 23/12/02-00:04
  ┃ ┗10963.Re^2: アナログ時計とカレンダのアクセサリ 11月24日版 - konno 23/12/01-23:24
  ┃  ┗10965.Re^3: アナログ時計とカレンダのアクセサリ 11月24日版 - としき 23/12/03-01:21
  ┃   ┗10966.Re^4: アナログ時計とカレンダのアクセサリ 11月24日版 - konno 23/12/03-21:10
  ┃    ┗10967.Re^5: アナログ時計とカレンダのアクセサリ 11月24日版 - としき 23/12/04-12:20
  ┃     ┗10968.Re^6: アナログ時計とカレンダのアクセサリ 11月24日版 - konno 23/12/05-02:04
  ┃      ┗10969.Re^7: アナログ時計とカレンダのアクセサリ 11月24日版 - としき 23/12/05-14:03
  ┃       ┗10970.Re^8: アナログ時計とカレンダのアクセサリ 11月24日版 - konno 23/12/05-23:11
  ┣10971.STIME.EXE 12月08日版 - konno 23/12/08-02:31
  ┃┗10975.Re: STIME.EXE 12月08日版 - としき 23/12/11-16:28
  ┃ ┗10976.Re^2: STIME.EXE 12月08日版 - konno 23/12/11-20:56
  ┗10980.STIME.EXE Ver 231212 - konno 23/12/13-01:12

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)   [引用無し]
おなまえ 
Eメール 
タイトル 
メッセージ auto soft pre(図表、プログラム) ※折り返さずに改行を入れてね
 参照先 
 暗証キー (英数字で8文字以内)
 プレビュー          

- 以下のフォームから自分の投稿記事を修正・削除することができます -
   処理   記事No   暗証キー
    [ページトップへ] [管理用]