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 曜日 水 木 金 土 日 月 火
とのことです。
これを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@
はたしてこれらが役に立つのかどうかはわかりませんが、そんなところで。
本記事に記載された内容は記事公開時点のものであり、必ずしも最新の情報とは限りません。記事をご覧いただく際には、最新の情報を確認するようお願いいたします。
OREFOLDER編集長。
1979年静岡県清水市生まれ、現静岡市清水区在住。
様々な巡り合わせから、このサイト1本で生活してる氷河期世代の一人。ガジェットに限らず広く浅く様々なものに興味があります。
スマートフォンは2010年にXperia SO-01Bを買ったのが最初。同時にb-mobile U300で格安SIMも始めました。これまでに数百台のスマホを手にし、格安SIMも常時20種類以上契約しています。