わいあーど頭痛

「ロスト・エンド・クレイドル」更新情報などのブログ

里々で特定の日から〇日後を算出して使う

里々技術記事ネタ募集2024春へ投稿いただいたネタを記事化しました。
ご自由にお使いください。

作例

まず以下のスクリプトを辞書に加えます。
同名の*や@などが既に存在する場合、そこに必要な記述を加えてください。
同名の文・単語群・変数が複数存在すると、それらの中からのランダム選択になってしまいます。

@グレゴリオ暦での経過日数
(calc,
365*(A0)+(A0)/4-(A0)/100+(A0)/400
+306*(calc,(A1)+1)/10+(A2)-428)
*OnSatoriLoad
$現在のグレゴリオ暦経過日数=(call,グレゴリオ暦での経過日数,(現在年),(現在月),(現在日))

*OnHourTimeSignal
>時報0時【タブ】(現在時)==0

*時報0時
$現在のグレゴリオ暦経過日数=(call,グレゴリオ暦での経過日数,(現在年),(現在月),(現在日))
#0時の時報が既に存在する場合はそこに日数計算の部分を加える
#satori_conf.txtに存在する「*初期化」に1行追加
*初期化
$現在のグレゴリオ暦経過日数=(call,グレゴリオ暦での経過日数,(現在年),(現在月),(現在日))


そして以下のようにすると、特定の日から現在までの経過日数を算出できます。
動作テストには「開発用パレット」の『現在時刻の仮想的変更』が有用です。

#ユーザ誕生月と日はテスト用に設定しています。不要な場合は消してください
*日付トークのテスト
$ユーザ誕生月【タブ】2
$ユーザ誕生日【タブ】1
$今年のユーザ誕生日までの日数=(call,グレゴリオ暦での経過日数,(現在年),(ユーザ誕生月),(ユーザ誕生日))-(現在のグレゴリオ暦経過日数)
>今年のユーザ誕生日から1日後【タブ】(今年のユーザ誕生日までの日数)==-1
>今年のユーザ誕生日より後【タブ】(今年のユーザ誕生日までの日数)<0
>今年のユーザ誕生日より前【タブ】(今年のユーザ誕生日までの日数)>0
>今年のユーザ誕生日当日【タブ】(今年のユーザ誕生日までの日数)==0

*今年のユーザ誕生日から1日後
:今年のユーザ誕生日から1日後です。

*今年のユーザ誕生日より後
:今年のユーザ誕生日から(calc,0-(今年のユーザ誕生日までの日数))日経ちました。
#当日より後だと数値がマイナスなので反転させています

*今年のユーザ誕生日より前
:今年のユーザ誕生日まであと(今年のユーザ誕生日までの日数)日です。

*今年のユーザ誕生日当日
:今日はユーザの誕生日です。
#数値が0だと当日です