ServiceNow開発者の皆さん、サーバーサイドスクリプト内で現在の日付を特定のフォーマット(例:MM-DD-YYYY)で取得・表示したいと思ったことはありませんか? ここでは、標準APIであるGlideDateTimeを活用して、今日の日付を簡単かつ正確にフォーマット変換する方法を解説します。
日付フォーマット変換の基本
- ServiceNowのサーバーサイドスクリプトでは、日付・時刻の操作に**
GlideDateTimeAPI**を使用するのがベストプラクティスです - 取得した日付に対して
getByFormat()メソッドを使うことで、任意の形式の文字列として出力できます
実際のスクリプト(実装例)
以下のスクリプトをBackground ScriptやBusiness Ruleなどで実行することで、フォーマットされた日付を取得できます。
// 1. 現在の日時を持つ GlideDateTime オブジェクトを作成
var gdt = new GlideDateTime();
// 2. 日付要素のみを抽出
var currentDate = gdt.getDate();
// 3. 指定したフォーマット(MM-dd-yyyy)で文字列に変換
var formattedDate = currentDate.getByFormat("MM-dd-yyyy");
// 結果を出力(例: 04-12-2026)
gs.info("今日の日付: " + formattedDate);実装時の注意点(Tips)
- 大文字・小文字の区別に注意
- 月(Month)を指定する場合は必ず大文字の
MMを使用してください(小文字のmmは「分(Minutes)」と認識されてしまいます)
- 月(Month)を指定する場合は必ず大文字の
- タイムゾーンの考慮
GlideDateTime()はデフォルトで**UTC(協定世界時)**を基準として日時の計算を行います- 特定のユーザーのローカルタイムゾーンに合わせて日付を表示したい場合は、システムの要件やユーザー設定に応じた日時の調整が必要になる場合があります
まとめ
- 日付のフォーマット操作には
GlideDateTimeクラスを使用するのが鉄則です getByFormat("MM-dd-yyyy")メソッドを使うことで、簡単に希望の文字列形式へ変換できます- フォーマット指定時の「月(
MM)」の大文字・小文字違いによるバグに注意しましょう
一言まとめ: 👉 GlideDateTime().getDate().getByFormat("MM-dd-yyyy") の1行で、日付フォーマット問題をサクッと解決!