2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ServiceNow - 曜日を表示する

Last updated at Posted at 2022-01-30

課題:

日付の曜日を日本語で表示させる。

2022年01月30日日曜日

問題:

ServiceNowで.getByFormat()で曜日を表示すると曜日が英語になる。Javaの場合はSimpleDateFormat()でLocaleを指定することはできますが、ServiceNowではスクリプトからLocaleの利用を禁止されている。

var gdt = new GlideDateTime();
var format = 'MM月dd日EEEE曜日';
var gDate = gdt.getLocalDate();
gs.info(gDate.getByFormat(format));

その結果、上のスクリプトを実行すると曜日は英語になる。

次ぎのようにスクリプトで日本語の曜日を配列にして取得することもできる。

var dayOfWeekStr = [ "日", "月", "火", "水", "木", "金", "土" ];

var gdt = new GlideDateTime();
var format = 'yyyy年MM月dd日E曜日';
var dow = gdt.getDayOfWeekLocalTime();

format = format.replace('E', dayOfWeekStr[dow]);
var gDate = gdt.getLocalDate();
gs.info(gDate.getByFormat(format));

しかし、ServiceNowでは各言語の翻訳をデータベースに保存してあるためそこから参照するようにしたら日本語だけではなく、他言語でも曜日を表示させることができる。

        var dowArray = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];

        function getDate(gdt, format, lang) {
            //var dow = getDayOfWeekList(lang);
            var dowNum = gdt.getDayOfWeekLocalTime();
            var gDate = gdt.getLocalDate();
            var orgStr = dowArray[dowNum - 1];
            orgStr = orgStr.charAt(0).toUpperCase() + orgStr.slice(1);
            return gDate.getByFormat(format).replace(orgStr, gs.getMessageLang(orgStr, lang));
        }

        var lang = 'ja';
        var format = 'yyyy年MM月dd日EEEE';
        var gdt = new GlideDateTime();

        gs.info(getDate(gdt, format, lang));

実行結果

lang='ja'
*** Script: 2022年01月30日日曜日
lang='en'
*** Script: 2022年01月30日Sunday
以上

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?