時間の加算と減算

この DataWeave の例では、日時型に対処する複数の加算および減算操作を示します。 開始する前に、DataWeave バージョン 2 (​%dw 2.0​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​%dw 1.0​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。

この例では、以下を使用します。

  • Sting (文字列) 型を Period (期間) 型に強制変換する ​as​ 関数。

  • 年、月、日、時、分、秒の指定子を提供する Period (期間) データ型用の ​P<date>T<time>​。
    たとえば、​|P2Y9M1D|​ は、2 年 9 か月と 1 日、​|PT5H4M3S|​ は 5 時間 4 分 3 秒の期間をそれぞれ表します。

DataWeave スクリプト:
%dw 2.0
output application/json
var numberOfDays = 3
---
{
  oneDayBefore: |2019-10-01T23:57:59Z| - |P1D|,
  threeDaysBefore: |2019-10-01T23:57:59Z| - ("P$(numberOfDays)D" as Period),
  a: |2019-10-01| - |P1Y|,
  b: |P1Y| - |2019-10-01|,
  c: |2019-10-01T23:57:59Z| - |P1Y|,
  d: |2019-10-01T23:57:59Z| + |P1Y|,
  e: |2019-10-01T23:57:59| - |P1Y|,
  f: |PT9M| - |23:59:56|,
  g: |23:59:56| + |PT9M|,
  h: |23:59:56-03:00| - |PT9M|,
  u: |23:59:56-03:00| - |22:59:56-03:00|,
  j: |23:59:56-03:00| - |22:59:56-00:00|,
  k: |2019-10-01T23:57:59| - |P2Y9M1D| - |PT57M59S| + |PT2H|,
  l: |23:59:56| - |22:59:56|,
  o: |2019-10-01| - |2018-09-23|,
  p: |2019-10-01T23:57:59Z| - |2018-10-01T23:57:59Z|,
  q: |2019-10-01T23:57:59| - |2018-10-01T23:57:59|
}
出力 JSON:
{
  "oneDayBefore": "2019-09-30T23:57:59Z",
  "threeDaysBefore": "2019-09-28T23:57:59Z",
  "a": "2018-10-01",
  "b": "2018-10-01",
  "c": "2018-10-01T23:57:59Z",
  "d": "2020-10-01T23:57:59Z",
  "e": "2018-10-01T23:57:59",
  "f": "23:50:56",
  "g": "00:08:56",
  "h": "23:50:56-03:00",
  "u": "PT1H",
  "j": "PT4H",
  "k": "2017-01-01T01:00:00",
  "l": "PT1H",
  "o": "PT8952H",
  "p": "PT8760H",
  "q": "PT8760H"
}

o: |2019-10-01| - |2018-09-23|​ の動作は Mule 4.3.0 で変更されました。Mule 4.3.0 でサポートされる DataWeave 2.3.0 では ​"o": "PT8952H"​ が返されます。Mule 4.2.0 でサポートされる DataWeave 2.2.0 では ​"o": "P1Y8D"​ が返されます。2.2.0 の動作を復元するには、​-M-Dcom.mulesoft.dw.date_minus_back_compatibility=true​ を設定できます。ただし、この設定は Studio のプレビューウィンドウには影響しません。Studio およびオンプレミスデプロイメントでのこの設定に関する指針は、​「システムプロパティ」​を参照してください。CloudHub デプロイメントについては、​「CloudHub 上のアプリケーションのプロパティ管理」​を参照してください。