目次
Platio式での日時/日付/時間/期間の扱い
日時/日付/時間/期間フィールドをPlatio式で扱う場合、定義済み関数で型を合わせたり各フィールドの型に合わせて変換したりします。
Platio式について詳しくは、開発者ドキュメントを参照してください。
注意事項
- フィールドの初期値や計算系フィールドでのPlatio式による自動設定は、Platioアプリからの入力・編集時のみ処理されます。データビューアーからの入力・編集では処理されません。
- シーンのプロパティは、「入力」または「計算」にします。詳しくはPlatio Studioガイドの「新規/表示/編集シーンの設定」の②フィールドを参照してください。
ここでは、例を使って扱い方について説明します。
※計算系フィールドとは「計算」カテゴリーにあるフィールドです。
※下記例のPlatio式中のcabc1234、cxyz5678はフィールドIDの例です。
日時フィールド
日時フィールドの値は日時型です。
計算するときは、number関数を使ってミリ秒(数値)に変換します。
※Platio式で、addDate関数以外で日時・日付を計算するとき、基本的な考え方として、1970年1月1日 00:00:00 (UTC)からミリ秒単位(数値)に変換してから計算し、利用する型で保存します。
number( cabc1234 /*日時*/ )
計算した結果(数値)や文字列から日時型にするときは、parseDateTime関数を使います。
※文字列から変換するときは、タイムゾーンに注意してください。
parseDateTime( cabc1234 /*数値*/ )
日時型の日時情報をフォーマットして文字列に変換したい(例えば、2022-09-01T06:30:00.000Zを2022年9月1日 6時30分で表記したい、等)場合は、formatDateTime関数を使います。使い方については、後述の「日時情報の表示形式を指定する」を参照してください。
formatDateTime( cabc1234 /*日時*/ , "YYYY年M月D日 H時mm分")
日付フィールド
日付フィールドはYYYY-MM-DD形式の文字列です。(YYYYは西暦年、MMは月、DDは日)
parseDate関数で日時型にできます。
計算するときは、parseDate関数で日時型にしてnumber関数を使ってミリ秒(数値)に変換します。
※Platio式で、addDate関数以外で日時・日付を計算するとき、基本的な考え方として、1970年1月1日 00:00:00 (UTC)からミリ秒単位(数値)に変換してから計算し、利用する型で保存します。
number(parseDate( cabc1234 /*日付*/ ))
日付型をフォーマットした文字列に変換したい(例えば、2022-09-01を2022年9月1日で表記したい、等)場合は、日時に変換してからformatDateTime関数を使います。使い方については、後述の「日時情報の表示形式を指定する」を参照してください。
formatDateTime(parseDate( cabc1234 /*日付*/ ), "YYYY年M月D日")
時間フィールド
時間フィールドはHH:mm:ss形式の文字列です。(Hは時間、mは分、sは秒)
計算するときは、parseTime関数を使ってミリ秒(数値)に変換します。
parseTime( cabc1234 /*時間*/ )
時間型をフォーマットした文字列に変換したい(例えば、09:30:00を9時30分で表記したい、等)場合は、formatTime関数を使います。使い方については、後述の「日時情報の表示形式を指定する」を参照してください。
formatTime( cabc1234 /*時間*/ , "H時mm分")
期間フィールド
期間フィールドはミリ秒単位の数値型です。
Platioアプリのシーン、データビューアーでは自動で日・時間・分の形式で表示されます。
期間のミリ秒を日・時間・分の形式で保存したいときは別の計算系フィールドで定義済み関数と演算子を使って計算します。
例:ミリ秒を分単位に計算
ceil(cabc1234 /* 期間 */ / 1000 / 60)
例:ミリ秒を日単位に計算
ceil(cabc1234 /* 期間 */ / 1000 / 60 / 60 / 24)
例:ミリ秒を月単位に計算(1ヶ月の日数を30.5日として計算)
ceil(ceil(cabc1234 /* 期間 */ / 1000 / 60 / 60 / 24) / 30.5)
期間をフォーマットした文字列に変換したい(例えば、ミリ秒を「○時間○分」で表記したい、等)場合、テキスト生成フィールドで定義済み関数と演算子を使って記述します。
例:「◯時間◯分」の形式で保存する。
floor(cabc1234 /* 期間 */ / (1000 * 60 * 60)) + "時間" +
floor(cabc1234 /* 期間 */ % (1000 * 60 * 60) / 1000 / 60) + "分"
※Platio式テンプレートの場合
${floor(cabc1234 /* 期間 */ / (1000 * 60 * 60))}時間${floor(cabc1234 /* 期間 */ % (1000 * 60 * 60) / 1000 / 60)}分
以下を参考に、必要に応じて、関数を使い分けてください。
次から、よくある使い方について説明します。
日時情報の前後の日時を求める
日時フィールド、日付フィールド、時間フィールドで値を取得し、◯日前後、◯時間前後などの日時情報を表示・保存したい場合、別で計算系フィールドを追加してPlatio式のaddDate関数を利用して加減算します。
※求めた日時の形式を指定するには、テキスト生成フィールドでPlatio式を使って記述します。後述の「日時情報の表示形式を指定する」を参照してください。
次に、例を使ってフィールドごとの記述を示します。減算する場合は式中の値の前に-を記述します。
日時フィールド
日時フィールドの場合は単位を指定します。単位を指定しない場合は数値はミリ秒になります。
加算(10日後の日付を求める)
addDate(cabc1234 /* 日時 */, 10, "days")
減算(10日前の日付を求める)
addDate(cabc1234 /* 日時 */, -10, "days")
また、値に別の数値フィールドを使用して下記のように計算できます。
加算
addDate(cabc1234 /* 日時 */, cxyz5678 /* 数値 */, "days")
減算
addDate(cabc1234 /* 日時 */, -cxyz5678 /* 数値 */, "days")
Platio Studioでの日時計算フィールドプロパティ
Platioアプリでのシーン
日付フィールド
単位を指定しない場合は数値は日数になります。
加算(1年後の日付を求める)
addDate(cabc1234 /* 日付 */, 365)
加算(10日後の日付を求める)
addDate(cabc1234 /* 日付 */, 10)
減算(10日前の日付を求める)
addDate(cabc1234 /* 日付 */, -10)
※1ヶ月前または1ヶ月後の計算はできません。30日または31日の指定はできます。
加算(30日後の日付を求める)
addDate(cabc1234 /* 日付 */, 30)
また、値に別の数値フィールドを使用して下記のように計算できます。
加算
addDate(cabc1234 /* 日付 */, cxyz5678 /* 数値 */)
減算
addDate(cabc1234 /* 日付 */, -cxyz5678 /* 数値 */)
Platio Studioでの日付計算フィールドプロパティ
Platioアプリでのシーン
時間フィールド
必要に応じて単位を指定します。単位を指定しない場合は数値はミリ秒になります。
加算(30分後の時間を求める)
addDate(cabc1234 /* 時間 */, 30, "minutes")
減算(30分前の時間を求める)
addDate(cabc1234 /* 時間 */, -30, "minutes")
また、値に別の数値フィールドを使用して下記のように計算できます。
加算
addDate(cabc1234 /* 時間 */, cxyz5678 /* 数値 */, "minutes")
減算
addDate(cabc1234 /* 時間 */, -cxyz5678 /* 数値 */, "minutes")
Platio Studioでの日付計算フィールドプロパティ
Platioアプリでのシーン
日時情報の表示形式を指定する
日時・日付・時間フィールドで値を取得し、表示形式を指定して表示・保存したい場合、別でテキスト生成フィールドを追加して、Platio式の定義済み関数を利用して表示形式を指定します。
テキスト生成フィールドのPlatio式
形式の指定は、日時・日付はformatDateTime関数、時間はformatTime関数を使います。
formatDateTime関数は日時型を扱うため、日時フィールドはそのまま使用できますが、日付フィールドはparseDate関数を使って日時型に変換して使用します。formatDateTime関数でのYYYY,MM,DDはそれぞれ年,月,日の値に、HH,mmは時,分の値に置き換えられます。
次に、例を使って形式ごとの記述を示します。
日時フィールド
「2023年01月04日 09:00」の形式
formatDateTime(cabc1234 /* 日時 */ , "YYYY年MM月DD日 HH:mm")
0埋めしない「2023年1月4日 9時00分」の形式
formatDateTime(cabc1234 /* 日時 */, "YYYY年M月D日 H時mm分")
日付のみの形式
formatDateTime(cabc1234 /* 日時 */ , "YYYY年MM月DD日")
時間のみの形式
formatDateTime(cabc1234 /* 日時 */ , "HH:mm")
「23-01-04」の形式
formatDateTime(cabc1234 /* 日時 */, "YY-MM-DD")
「01月04日(水曜日)」の形式
formatDateTime(cabc1234 /* 日時 */, "MM月DD日(dddd)")
「1月4日(水)」の形式
formatDateTime(cabc1234 /* 日時 */, "M月D日(dd)")
和暦の「R5年」の形式
formatDateTime(cabc1234 /* 日時 */, "Ny年")
和暦の「令和5年」の形式
formatDateTime(cabc1234 /* 日時 */, "NNNNy年")
入力された年の週番号(月曜始まり)「202301」の形式
formatDateTime(cabc1234 /* 日時 */,"ggggww")
入力された年の週番号(日曜始まり)「202301」の形式
formatDateTime(cabc1234 /* 日時 */,"ggggWW")
Platio Studioでのテキスト生成フィールドプロパティ
Platioアプリでのシーン
日付フィールド
「2023年01月04日」の形式
formatDateTime(parseDate(cabc1234 /* 日付 */) , "YYYY年MM月DD日")
0埋めしない「2023年1月4日」の形式
formatDateTime(parseDate(cabc1234 /* 日付 */), "YYYY年M月D日")
「23-01-04」の形式
formatDateTime(parseDate(cabc1234 /* 日付 */), "YY-MM-DD")
「01月04日(水曜日)」の形式
formatDateTime(parseDate(cabc1234 /* 日付 */), "MM月DD日(dddd)")
「1月4日(水)」の形式
formatDateTime(parseDate(cabc1234 /* 日付 */), "M月D日(dd)")
和暦の「R5年」の形式
formatDateTime(parseDate(cabc1234 /* 日付 */), "Ny年")
和暦の「令和5年」の形式
formatDateTime(parseDate(cabc1234 /* 日付 */), "NNNNy年")
入力された年の週番号(月曜始まり)「202301」の形式
formatDateTime(parseDate(cabc1234 /* 日付 */),"ggggww")
入力された年の週番号(日曜始まり)「202301」の形式
formatDateTime(parseDate(cabc1234 /* 日付 */),"ggggWW")
Platio Studioでのテキスト生成フィールドプロパティ
Platioアプリでのシーン
時間フィールド
0埋めしない「9:00」の形式
formatTime(cabc1234 /* 時間 */, "H:mm")
午前・午後の「午後1時30分」の形式
formatTime(cabc1234 /* 日付 */, "Ah時mm分")
補足
開発者ドキュメント「Platio式」のformatDateTimeの記述にあるとおり、日時で使用できるフォーマットは、Formatを参照してください。
日時情報同士の差分(期間)を求める
データポケットで開始・終了など2つの日時フィールド、日付フィールド、時間フィールドで値を取得し、2つの差分(期間)を表示・保存したい場合、初期値を設定するか、または別で計算系フィールドを追加してPlatio式の演算子や定義済み関数を利用します。
日時情報の差分(日時情報 - 日時情報)を求める
差分を求めるには、以下の2つの方法があります。
※求めた期間の形式を指定するには、テキスト生成フィールドでPlatio式を使って記述します。前述の「期間フィールド」を参照してください。
次に、それぞれの方法について説明します。
期間フィールドの初期値プロパティを使う
Platioアプリからの入力・編集するときに差分を求める場合、期間フィールドの初期値を使うことができます。
差分を求めたい2つの日時系フィールドを追加した後に期間フィールドを追加し、期間フィールドの初期値プロパティで「開始・終了時間」を選択すると「開始時間」「終了時間」で日時系フィールドを選択できます。日時・日付・時間フィールドのいずれか同士を指定します。
※期間フィールドは、Platioアプリ、データビューアーでの表示は日・時間・分で表示されます。保存した値はミリ秒単位になっており、別フィールドのPlatio式では期間フィールドをミリ秒単位で扱います。
Platio Studioでの期間フィールドプロパティ
フィールドの並び
フィールドプロパティ
Platioアプリでのシーン
日時
日付
時間
Platio式で日時系フィールドから同じ日時系フィールドを引く
Platio式で日時系フィールドから同じ日時系フィールドの差分を求める場合、計算系フィールドでPlatio式の演算子を使って減算します。
基本的な考え方としては、日時・日付は1970年1月1日 00:00:00 (UTC)からミリ秒単位の数値に変換してから減算し、利用する型(日時型、日付型、時間型)で保存します。
次に演算子を使った例を示します。
日時
日時から日時を引いたミリ秒を求める
number(cxyz5678 /* 終了日時 */) - number(cabc1234 /* 開始日時 */)
※日時フィールド同士の場合は直接でも減算できます。
cxyz5678 /* 終了日時 */ - cabc1234 /* 開始日時 */
日付
日付から日付を引いたミリ秒を求める
number(parseDate(cxyz5678 /* 終了日 */)) - number(parseDate(cabc1234 /* 開始日 */))
時間
時間から時間を引いたミリ秒を求める
parseTime(cxyz5678 /* 終了時間 */) - parseTime(cabc1234 /* 開始時間 */)
期間の加算・減算
期間の単位のミリ秒に加算・減算するときは、単位を合わせて演算子で計算します。
加算:10分加えた期間を求める(期間計算フィールド、単位:ミリ秒)
cabc1234 /* 期間 */ + (10 * 60 * 1000)
減算:10分引いた期間を求める(期間計算フィールド、単位:ミリ秒)
cabc1234 /* 期間 */ - (10 * 60 * 1000)
また、値に別の期間フィールドや数値フィールドを使用して期間計算フィールドに下記のように計算できます。
※数値はミリ秒単位にします。
加算
cabc1234 /* 期間 */ + cxyz5678 /* 数値 */
減算
cabc1234 /* 期間 */ - cxyz5678 /* 数値 */
例)勤務時間の期間から休憩時間の期間を引く
cabc1234 /* 勤務時間の期間 */ - cxyz5678 /* 休憩時間の期間 */
Platio式で記述をまとめる例
1つのフィールドで、計算して、かつ表示形式を指定したい場合は、まとめてPlatio式を記述できます。
次に、記述例を示します。
例:数値計算フィールド
日付フィールドから期間を出して日の単位で保存する。
ceil((number(parseDate(cxyz5678 /* 終了日 */))
- number(parseDate(cabc1234 /* 開始日 */))) / 1000 / 60 / 60 / 24)
例:テキスト生成フィールド
時間フィールドから期間を出して「◯時間◯分」の形式で保存する。
floor( (parseTime(cxyz5678 /* 終了時間 */) - parseTime(cabc1234 /* 開始時間 */)) / (1000 * 60 * 60)) + "時間" +
floor( (parseTime(cxyz5678 /* 終了時間 */) - parseTime(cabc1234 /* 開始時間 */)) % (1000 * 60 * 60) / 1000 / 60) + "分"