GASでISO 8601形式の時刻表記を出力したかった
Google Apps Scriptこと「GAS」を使っていますか?
私はスプレッドシートと合わせてよく頻繁に使っています。といっても大げさなことはせず、JSONの吐き出しやPOSTでログを保存してる程度ですけど…
で、GASの便利なところはサーバーサイドの処理なので「ほぼ正しい日時」を出力(返らせること)ができるのです(◍ ´꒳` ◍)b
※ほぼ、というのはGASの反応が微妙に遅かったりするので数秒のラグがある。という意です。
んで、日時を出力させるときに私はいつもISO 8601形式で吐き出しているんですよね。
ISO 8601形式の時刻表記例
基本形式 20190518T182831+0900
拡張形式 2019-05-18T18:28:31+09:00
残念ながらJavaScriptではISO 8601形式で出力する機能はないので自前で用意する必要性があります。(※テンプレートリテラルを使ってるのでIE以外で試してね?)
function getDate() {
const date = new Date();
const Y = date.getFullYear();
const M = toDoubleDigits(date.getMonth() + 1);
const D = toDoubleDigits(date.getDate());
const h = toDoubleDigits(date.getHours());
const m = toDoubleDigits(date.getMinutes());
const s = toDoubleDigits(date.getSeconds());
const text = `${Y}-${M}-${D}T${h}:${m}:${s}+09:00`;
return text;
}
function toDoubleDigits(num) {
const str = String(num);
if (str.length === 1) return `0${str}`;
return str;
}
const d = getDate();
console.log(d); // 2019-05-24T11:24:15+09:00
じつに面倒くさいですね。。。(しかもサーバーサイドじゃないからJSTじゃないかもだし、時刻弄ってるかもだし、注意!!(どっかから時刻を取得して、引数で渡せばええんとちゃう?
でもGASだと出力フォーマットを指定して、日時を吐き出せるのです!!(ちなみに今年になって初めて知った。おっそーい)
んでんで、これを利用してISO 8601形式出力させるスクリプトはこうします。
function myFunction() {
const date = Utilities.formatDate(new Date(), 'Asia/Tokyo', "yyyy-MM-dd'T'HH:mm:ss'+09:00'");
Logger.log(date); // 2019-05-24T11:13:16+09:00
}
うーん、簡単。
ちなみにこれは全部JST(日本標準時)なんで注意してね♡
追記(2019/05/24 16:00)
JSTでなくてUTCであればJavaScriptでも1行で取得可能です。
const d = new Date().toISOString();
console.log(d); // 2019-05-24T07:03:03.089Z
ディスカッション
コメント一覧
まだ、コメントがありません