更新:2020-09-09
作成:2020-08-02

日時の形式

日時関連のアクションでは、さまざまな日時の表記を使用することができます。
この章では、日時の表記形式について説明します。

日時

詳細は後述しますが、たとえば出力では以下のような表記が使用できます。

また、入力では前述の形式に加え、以下のような幅広い表記が使用できます。

  • 2020/4/1
  • 20/04/01
  • 20-04-01
  • 20200401
  • 今年4月1日
  • 令和2年4月1日
  • R2.4.1
  • ヒジュラ歴1442年4月1日
  • 4/1
  • Apr 1, 2020
  • 1st April 2020
  • 20:07:42
  • 8:07 PM
  • PM 8:07
  • 8.07 PM
  • 午後8時半
  • 20時7分42.180秒
  • 120分後

出力形式

日付型変数・間隔型変数の値を出力する際には、指定した出力形式にすることができます。
アクションに入力したマジック変数(日付型変数・間隔型変数)をタップすると、画面下部にピッカーが現れるので、そこで表示形式を指定します。
なお「時間フォーマット」のみを「カスタムフォーマット」にすることはできないため、「日付フォーマット」の項で「カスタムフォーマット」を指定し、「文字列をフォーマット」の項で日付と時刻をまとめて指定してください。

出力形式を選択するピッカー
日付型変数・間隔型変数の出力形式を選択するピッカー

出力形式は、次の通りです。

日付フォーマット

  • なし
    日付を表示しません。
  • 「中」と同じです。
    ※ 日本語環境では、「中」との違いはありません。
  • 2020/04/01(デバイスの暦法が「西暦(グレゴリオ暦)」の場合)
    R2/04/01(デバイスの暦法が「和暦」の場合)
  • 2020年4月1日(デバイスの暦法が「西暦(グレゴリオ暦)」の場合)
    令和2年4月1日(デバイスの暦法が「和暦」の場合)
  • RFC 2820
    Wed, 01 Apr 2020 20:07:42 +0900のように表示されます。
    時刻も一緒に表示されます。
  • ISO 8601
    2020-04-01のように表示されます。
  • 相対
    日・週・月・年単位で、相対表記で表示します。
    相対表記については、後の節を参照してください。
  • 経過時間/終了までの時間
    秒・分・時間・日・週・月・年単位で、相対表記で表示します。
    相対表記については、後の節を参照してください。
  • カスタム
    任意の形式で日時を表示します。
    形式は「文字列をフォーマット」の項で指定します。
    カスタムフォーマットの書式については、次の節を参照してください。

時間フォーマット

「日付フォーマット」が「RFC 2820」のときは、指定できません。

  • なし
    時刻を表示しません。
  • 8:07のように表示されます。
    プロパティ「日付フォーマット」が、「短」・「中」・「長」・「相対」のときに選択できます。
  • 8:07:42のように表示されます。
    プロパティ「日付フォーマット」が、「短」・「中」・「長」・「相対」のときに選択できます。
  • 8:07:42 JSTのように表示されます。
    プロパティ「日付フォーマット」が、「短」・「中」・「長」・「相対」のときに選択できます。
  • ISO 8601時刻を含める
    T20:07:42+0900のように表示されます。
    プロパティ「日付フォーマット」が、「ISO 8601」のときにスイッチとして表示されます。

カスタム

カスタムフォーマットで書式指定子を使うと、出力形式を任意のものに設定することができます。
ショートカットApp内のアクションの説明では、「Unicode Technical Standard #35 “Unicode Locale Data Markup Language (LDML)”」の“Part 4: Dates”のFormat Patterns(リンク先は英語)に従っていると書かれていますが、その書式指定子のすべてに対応しているわけではありません。
ここでは主要なものを紹介します。
なお出力は西暦のみで、和暦などを出力することはできません。
またカスタムフォーマットの中で、 書式指定子と同じ文字を使用したい場合は、シングルクォート(')で囲むとエスケープすることができます。

※日付型変数はショートカットApp内部ではNSDateクラスとして扱われているため、カスタムフォーマットの書式は、iOSのフレームワークのNSDateFormatterクラスと同じ書式です。
ただし和暦には対応していないなどの違いがあり、完全に同一ではないようです。



※出力例は、日時が2020年4月1日水曜日 20時7分42秒180(日本標準時)の場合
書式指定子 出力例 説明
G 西暦 暦の種類西暦を出力します。
GG
GGGGG AD 英語の略記で、暦の種類ADを出力します。
y 2020 4桁表記で、西暦年を出力します。
yyyy
yy 20 2桁表記で、西暦年を出力します。
M 6 月を出力します。
MM 06 2桁表記で、月を出力します。
MMMM 6月 日本語表記で、月を出力します。
W 1 その月の第何週目かを出力します。
w 14 その年の第何週目かを出力します。
ww 14 2桁表記で、その年の第何週目かを出力します。
d 1 日を出力します。
dd 01 2桁表記で、日を出力します。
D 92 その年の1月1日からの日数を出力します。
DD 92 2桁表記で、その年の1月1日からの日数を出力します。
3桁になる場合は、3桁で出力します。
DDD 092 3桁表記で、その年の1月1日からの日数を出力します。
曜日 e 4 曜日を数で出力します。
日曜日は1、土曜日は7です。
E 1文字表記で、日本語の曜日を出力します。
EEE
EEEE 水曜日 3文字表記で、日本語の曜日を出力します。
午前/午後 a 午後 日本語で、午前/午後を出力します。
値は午前午後です。
時間帯 B 日本語で、時間帯を出力します。
4:00~11:59は、12:00~15:59は、16:00~18:59は夕方、18:00~20:59は、23:00~3:59は夜中です。
K 8 12時間制の時を出力します。
KK 08 2桁表記で、12時間制の時を出力します。
h 8 12時間制の時を出力します。
ただし0時台は、12になります。
hh 08 2桁表記で、12時間制の時を出力します。
ただし0時台は、12になります。
H 20 24時間制の時を出力します。
HH 20 2桁表記で、24時間制の時を出力します。
k 20 24時間制の時を出力します。
ただし0時台は、24になります。
kk 20 2桁表記で、24時間制の時を出力します。
ただし0時台は、24になります。
m 7 分を出力します。
mm 07 2桁表記で、分を出力します。
s 42 秒を出力します。
ss 42 2桁表記で、秒を出力します。
ミリ秒 SSS 180 3桁表記で、ミリ秒を出力します。
ミリ秒が記録されていない場合は、000を出力します。
タイムゾーン z JST 英語の略記で、タイムゾーンを出力します。
zzzz 日本標準時 日本語表記で、タイムゾーンを出力します。
Z +0900 ISO 8601の基本形式で、グリニッジ標準時との時差を出力します。
ZZZZ GMT+09:00 グリニッジ標準時との時差を出力します。
ZZZZZ +09:00 ISO 8601の拡張形式で、グリニッジ標準時との時差を出力します。
V jptyo IETF言語タグ(BCP 47: Tags for Identifying Languages)の表記で、タイムゾーンを出力します。
VV Asia/Tokyo tz databaseの表記で、タイムゾーンを出力します。
VVV 東京 日本語表記で、タイムゾーンの地域名を出力します。
VVVV 日本時間 日本語表記で、タイムゾーンを出力します。

入力形式

入力形式については、前述のように自由度が非常に高くなっています。
それがゆえに、きちんと仕様を理解していないと、これがバグの原因になることがあります。
以下のような不具合を予防するため、RFC 2820, ISO 8601形式などのような規格で定められた日時表記の使用を、おすすめします。
特に注意が必要なものとしては、以下があります。

またこれ以外の有名な事例では、日本では日付は年/月/日と表記しますが、アメリカでは月/日/年、ヨーロッパでは日/月/年という表記が主流であるため、海外の日付表記をそのまま入力すると、誤った日付になってしまう恐れがあります。

相対表記

macOSと同様に、相対表記も入力・出力で使用することができます。
ただし曜日・時制・時間・時差の解釈で勘違いが起きたり、記述ミスがあると誤った日時に設定されてしまったり、日付をまたいだときに不都合が生じることがあります。
そのため、相対表記の使用はおすすめしません。

出力形式

この節では、間隔型変数の出力で使用できる相対表記を紹介します。
日付型変数で使用した場合、現在の日時との差を相対表記で出力します。

プロパティ「日付」が「相対」の場合

日時の範囲が下記以外の場合は、相対表示ではなく日付が出力されます。

プロパティ「日付」が「経過時間/終了までの時間」の場合
  • ○秒前
    数字の範囲は、0~59です。
  • ○分前
    数字の範囲は、1~59です。
  • ○時間前
    数字の範囲は、1~59です。
  • ○日前
    数字の範囲は、1~6です。
  • ○週間前
    数字の範囲は、1~3です。
  • ○年前
    数字の範囲は、1~です。
  • ○秒後
    数字の範囲は、0~59です。
  • ○分後
    数字の範囲は、1~59です。
  • ○時間後
    数字の範囲は、1~59です。
  • ○日後
    数字の範囲は、1~6です。
  • ○週間後
    数字の範囲は、1~3です。
  • ○年後
    数字の範囲は、1~です。

入力形式

この節では、日付型変数・間隔型変数の入力で使用できる、相対表記を紹介します。
下記のほか、前述の出力形式の表記も使用できます。
なお相対表記の全貌を把握できていないため、ここでは筆者の検証で確認できたものだけを紹介します。

日単位

時刻を指定しない場合は12:00に、タイムゾーンを指定しない場合は日本標準時(GMT+09:00)に設定されます。

時間単位

●●には、日単位の相対表記が入ります。
日付の相対単位を使わない場合、日付は今日になります。
なお時刻が1~11時台の場合、12時間制だと認識されてしまうため、アクションを実行した時刻により午前・午後のどちらかに自動で決定されます。
これを避けるには、午前AMなどを付加してください。

UNIX時間

これらの他によく使われている日時表記の一つに、UNIX時間があります。
iOSの内部でもUNIX Timeは使われていますが、ショートカットAppではこれを直接入力・出力する方法がありません。
しかし、ひと手間かけることでUNIX時間を入力・出力することができます。
詳細は、Tips&FAQのページを参照してください。