先日、「翌月の日曜日のリストが知りたい」という知恵袋に回答しました.
同じレシピをここで紹介するのではつまらないので、更に応用したレシピを紹介します.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
スポンサーリンク
レシピ
ここでは「指定した年月・曜日の日付をリストする」ことを目的とします.
例えばこの記事を投稿した1月の木曜日は2,9,16,23,30の5つあります.
これを好きな年・月に対して計算できるようにします.
段階を踏んで求める結果を得ることにします.
まずは「入力を要求」で好きな年月を選択します(日付は無視されるので好きな日でいいです).
この選択した年月の1日を取得するために「日付をフォーマット」で「日付の書式」を「カスタム」に、下の「文字列をフォーマット」の欄をyyyy/MM/1と書き換えます.
(今回はフォーマットの編集を敢えてこのアクションでわかりやすく書くことにします)
この結果を「選択した月の1日」という変数に置きます.
次は「辞書」アクションを追加し、キーに各曜日を、値を日曜の場合は1、月曜は2、…、土曜は7とします.
これは日付フォーマットに対応する値です(リストからインデックスを取得できなかったので辞書を使っています).
この辞書のキーから「リストから選択」でひとつ選び、さらにその値である日付フォーマットの数字を取り出して「曜日のインデックス」とでも名付けておきます.
次は指定した年月の末日、言い換えれば日数を取得します.
以前紹介した内容で、
- 選択した月の1日に1ヶ月を加算
- それを1日減算
- その日付を取得
となります(画像の最初2つは不要でした).
次に選択した月の第一曜日とその曜日の数を取得します.
説明が難しいんですが、前者は
8-"選択した月の1日のインデックス"+"二度目の「リストから選択」で取得した指定曜日のインデックス"
の結果を7で割った余りで得られます.
後者は選択した月の日数から、選択した月の第一曜日を引いたものを7で割った整数部に1を足したものになります.
これで選択した年月の第一曜日とその数がわかりました.
あとは第一曜日を7足したものを曜日の数だけ足してリストすれば目的のリストが得られます.
検証を兼ねてひととおりの値がどうなっているか確かめます.
実行
カレンダーから希望の年月を指定します.
最初に書いた通りここで指定した日付は無視されるので適当な日で構いません.
年月が遠い場合は左上の"yyyy年M月"の部分をタップすればドラムロールが出てきます.
次にリストしたい曜日を選択します.
結果に問題はなさそうです.
かなり離れた年でも大丈夫のようですね.
〆
「入力を要求」なりカレンダーを目視すればわかることですが、レシピ内で扱うとなるとことは単純ではないですからこういうのが必要になってくるかもしれません.