Glaejaで指定日の曜日を求める

先日の「Glaejaで1ヶ月表示のカレンダーを作る」の中で、その月の1日の曜日を調べる必要があり、以下のようなコードを書きました。

$f$@p@8@p@+@x@$d$@p@-@x@$d$@p@7@p@/@x@floor@x@7@p@*@x@+@x@7@p@mod@x@gcal@Q@

これは以下の公式にそって書かれたものです。

1日の曜日=(今日の曜日+8-今日の日付+7×(今日の日付を7で割った正数))を7で割った剰り

が、よくよく考えればGlaejaでは(修正)ユリウス通日が使えるので、それを使って曜日を求めることもできます。

修正ユリウス通日から曜日を求めよう

Wikipediaによれば

七曜日の求め方
該当日の修正ユリウス日を7で割り、余りを求める。余りが0より小さい場合は7を加える。下記の換算表により曜日に変換する。これは本質的にはツェラーの公式と同等である。

修正ユリウス日による曜日の換算表
余り 0 1 2 3 4 5 6
曜日

ユリウス通日 – Wikipedia

とのことです。
これをGlaejaで表すと

$yyyyMM011200$@p@mjd@x@floor@x@7@p@mod@x@.0@P@

となります。
「$yyyyMM011200$@p@」で今月1日12時(201401011200)をスタックに積み
「mjd@x@」で修正ユリウス通日に返還し、
「floor@x@」で切り下げで整数化し、
「7@p@mod@x@」で7で割った余りを求め、
「.0@P@」でそれを表示しています。

ウィジェット変数gcalに納める場合は

$yyyyMM011200$@p@mjd@x@floor@x@7@p@mod@x@gcal@Q@

となります。最初のものに比べてはるかに短くなりましたね。ただ、数字と曜日の関係は変わってしまっているので、そこは注意が必要です。

応用

ちょっと応用して、いろんな日の曜日(の数字)を求めてみましょう。

今月末日の曜日

$yyyyMMl1200$@p@mjd@x@floor@x@7@p@mod@x@.0@P@

先月1日の曜日

$yyyyMM011200$@p@1000000@p@-@x@mjd@floor@x@x@7@p@mod@x@.0@P@

先月末日の曜日

$yyyyMM011200$@p@10000@p@-@x@mjd@x@floor@x@7@p@mod@x@.0@P@

来月1日の曜日

$yyyyMM011200$@p@1000000@p@+@x@mjd@x@floor@x@7@p@mod@x@.0@P@

来月末日の曜日

$yyyyMMl1200$@p@10000@p@+@x@mjd@x@floor@x@7@p@mod@x@.0@P@

今月末日の曜日を英語で

$yyyyMMl1200$@p@mjd@x@floor@x@7@p@mod@x@Wed,Thu,Fri,Sat,Sun,Mon,Tue@m@

はたしてこれらが役に立つのかどうかはわかりませんが、そんなところで。

この記事が気に入ったら
いいね!しよう
 シェアする  ツイートする
PREVIOUS POST
NEXT POST
ANDROID
GIVES YOU
MORE