**この記事を書いたあと、同じ処理を実現するとてもスマートな方法をコメントで教えていただきました。あまりにスマートすぎて記事が短くなったのでtipsの中にまとめました。iosのショートカット tips ナイスなコメントをしてくださった @Kynako さん、ありがとうございました。
iosに搭載されているショートカットは魅力的なプログラミング環境なんだけど、情報が少ないので、見つけたtipsを記録しておく
#現在時刻の文字列
現在時刻を取得して年月日時分を別々に得るまで
##取得
下の図のアクションで現在時刻を取得して、それを文字列テキストに変換します
以下の説明では、最初のアクションを
[日時/{現在の日付}] (1)
次のアクションを
[書類/{日時}からテキストを取得] (2)
と表記します。{}は変数を示します
日時はアクション(2)で「日付として」、日付けフォーマット「中」、時間フォーマット「短」としたとき
2020/05/28 22:47 (a)
あるいは
2020/05/28 5:24 (b)
というフォーマットになります
##年月日の取り出し
正規表現を使って日時文字列から年月日を取り出します
[テキスト/{テキスト}で{[0-9][0-9]}に一致] (3)
日時文字列から数字2文字の組を1要素とするリストを作ります
(a)の例では
20
20
05
28
22
47
(b)の例では
20
20
05
28
24
のリストになります。(b)の例では「時」の要素が1文字なので選ばれません
###年の抽出
リストの第1,2要素を取り出します
[スクリプティング/{一致}から{Rangeの項目}の{1}から{2}までを取得] (4)
出力は
20
20
となります
###月の抽出
リストの第3要素を取り出します
[スクリプティング/{一致}から{項目のインデックス}の{3}を取得] (5)
出力は
05
となります
###日の抽出
リストの第4要素を取り出します
[スクリプティング/{一致}から{項目のインデックス}の{4}を取得] (6)
出力は
28
となります
##時分の取り出し
正規表現を使って日時文字列から時刻を取り出します
[テキスト/{テキスト}で{[ 1][0-9]:[0-9][0-9]}に一致] (7)
日時文字列からスペースか「1」で始まり「:」で時分を分けた要素を取り出します
(a)の例では
22:47
(b)の例では
5:24
となります
(b)の場合は0パディングしたいので先頭のスペースを「0」に変換します
[書類/{一致}の{ ([0-9]):を{0$1:}に置き換え}] (8)
アクション(8)で()で囲まれている正規表現で一致した文字列を「$1」で参照します
出力は(a)の場合は変化なし(マッチしない)、(b)の場合だけ
05:24
となります
次に、「:」で分割してリストを作ります
[テキスト/{アップデートされたテキスト}を{カスタム}{:}で分割]
###時の抽出
リストの第1要素を取り出します
[スクリプティング/{テキストの分割}から{項目のインデックス}の{1}を取得] (9)
出力は(a)の場合は
22
となります
###分の抽出
リストの第2要素を取り出します
[スクリプティング/{テキストの分割}から{項目のインデックス}の{2}を取得] (10)
出力は(a)の場合は
47
となります
これで
アイテム | アクション |
---|---|
年 | 4 |
月 | 5 |
日 | 6 |
時 | 9 |
分 | 10 |
年月日時分が別々の出力として得られました |
#現在時刻の利用