Genesys Cloudでの時刻フォーマット変換
ISO 8601形式から「yyyy-MM-dd HH:mm:ss」形式への変換方法
システム間でのデータのやり取りにおいて、時刻のフォーマットは重要な要素です。異なるシステムやアプリケーションが異なる時刻フォーマットを使用するため、フォーマットを変換する必要が生じます。特に、ISO 8601形式(例:2024-10-20T12:34:56Z)を扱う際に、サードパーティ製品や内部のシステムで独自のフォーマットが要求されることがよくあります。
本記事では、Genesys Cloudの getCurrentDateTimeUTC() 関数で取得した時刻を、システムが認識できる yyyy-MM-dd HH:mm:ss 形式に変換する方法を紹介します。
1. なぜ時刻フォーマットの変換が必要か?
異なるシステムが時刻データを受け取る際、フォーマットの違いが原因で処理が失敗することがあります。例えば、ISO 8601形式は国際的に標準化された時刻の表現方法ですが、システムによってはISO 8601形式ではなく、別の形式で時刻を入力する必要がある場合があります。特に古いシステムやカスタム仕様のシステムでは、 yyyy-MM-dd HH:mm:ss のようなフォーマットが要求されることがあります。
そのため、データの正確なやり取りや表示を行うためには、フォーマット変換が必要です。Genesys Cloudで取得したUTC時刻を他のシステムで使用するためには、適切な形式に変換して渡す必要があるのです。
2. UTC時刻の取得
まず、Genesys Cloudの標準関数 getCurrentDateTimeUTC() を使用して、現在のUTC時刻をISO 8601形式で取得します。この関数は、標準的なUTC時刻を次のような形式で返します。
currentUTCDateTime = getCurrentDateTimeUTC()
例として、次のような出力が得られるでしょう。
2024-09-04T12:34:56Z
この形式はISO 8601形式で、`T` は日付と時刻を区切り、末尾の `Z` はUTC(協定世界時)を示しています。この形式は広く使われているものの、前述のように一部のシステムでは直接扱えない場合があります。
3. 時刻フォーマットの変換
取得したISO 8601形式の時刻を、`yyyy-MM-dd HH:mm:ss` 形式に変換するには、以下のステップを使用します。
// 現在の時刻を取得し、9時間加算してJSTに変換
Flow.GetCurrentTime = AddHours(getCurrentDateTimeUtc(), 9)
// 各コンポーネントを文字列として取得
Flow.Year = ToString(Year(Flow.GetCurrentTime))
Flow.Month = IF(Month(Flow.GetCurrentTime) < 10, "0" + ToString(Month(Flow.GetCurrentTime)), ToString(Month(Flow.GetCurrentTime)))
Flow.Day = IF(Day(Flow.GetCurrentTime) < 10, "0" + ToString(Day(Flow.GetCurrentTime)), ToString(Day(Flow.GetCurrentTime)))
Flow.Hour = IF(Hour(Flow.GetCurrentTime) < 10, "0" + ToString(Hour(Flow.GetCurrentTime)), ToString(Hour(Flow.GetCurrentTime)))
Flow.Min = IF(Minute(Flow.GetCurrentTime) < 10, "0" + ToString(Minute(Flow.GetCurrentTime)), ToString(Minute(Flow.GetCurrentTime)))
Flow.Second = IF(Second(Flow.GetCurrentTime) < 10, "0" + ToString(Second(Flow.GetCurrentTime)), ToString(Second(Flow.GetCurrentTime)))
// yyyy-MM-dd HH:mm:ss 形式に変換
Flow.CurrentTime = Flow.Year + "-" + Flow.Month + "-" + Flow.Day + " " + Flow.Hour + ":" + Flow.Min + ":" + Flow.Second
このコードでは、Flow.GetCurrentTime を用いて各要素を取得し、ゼロパディング(1桁の値を2桁に変換する処理)をIF文で行っています。これにより、9 が 09 となるため、時刻が常に2桁で表現されます。
例えば、2024-09-04T12:34:56Z というISO 8601形式の時刻は、次のように変換されます。
2024-09-04 12:34:56
この変換後の形式は、よりシンプルなフォーマットで、多くのシステムやアプリケーションが認識しやすい形式です。
4. まとめ
時刻フォーマットの変換が必要な理由: 異なるシステムが時刻を異なる形式で要求するため、フォーマットを適切に変換する必要があります。
現在のUTC時刻の取得方法: getCurrentDateTimeUTC() 関数を使用して、現在のUTC時刻をISO 8601形式で取得します。
フォーマットの変換方法: 時刻要素を手動で組み立てて yyyy-MM-dd HH:mm:ss 形式に変換します。
これらの手順を実行することで、他のシステムが期待するフォーマットに時刻を変換し、円滑なシステム間のやり取りを実現することができます。