【GAS】UNIX time を取得する方法


調べたきっかけ

とある API のドキュメントを見ていたら UNIX timestamp 形式で時間単位の指定が可能と書かれていました。
LINE WORKS API - 監査データのダウンロード

UNIX timestamp 形式を採用している API って割とあるんですね。

UNIX time とは

UNIX time(UNIX 時間)とは、協定世界時 (UTC) での1970年1月1日午前0時0分0秒から形式的な経過秒数のことです。
ウィキペディア(Wikipedia)- UNIX 時間

秒数なので、気の遠くなるほど大きい数ですね( ゚Д゚)

UNIX time を取得する

と、言うわけでタイトル通り Google Apps Script で UNIX time を取得したいと思います。

探したところ、Date.parse() メソッドを使うのが良さそうです。
日時の文字列を読み込み、UTC からの経過時間を表すミリ秒単位の数値を返してくれます。

getUnixTime.gs
function getUnixTime(){
  const now = new Date()
  Logger.log(`now: ${now}`)

  const formatNow = Utilities.formatDate(now, 'GMT', 'dd MMM yyyy HH:mm:ss z')
  Logger.log(`formatNow: ${formatNow}`)

  const unixTime = Date.parse(formatNow)/1000
  Logger.log(`unixTime: ${unixTime.toFixed()}`)
}
now: Tue Dec 22 17:14:27 GMT+09:00 2020
formatNow: 22 Dec 2020 08:14:27 GMT
unixTime: 1608624867

コード解説

  • 日付フォーマットの差異

new Date() で取得できる日付と Date.parse() の引数として入れる日付のフォーマットが異なっていたので Utilities.formatDate() を使って揃えました。

特に、月が Dec とかの英字形式でないと容赦なく NaN が返ってきます。

  • 戻り値で返ってくるのはミリ秒単位

Date.parse() で返ってくる値はミリ秒単位なので 1000 で割って秒単位にしています。

  • 整数表記にする

最後に toFixed メソッドを使用して整数表記にしました。

おわりに

ここまでお付き合いいただきありがとうございました。

調べてみたら UNIX time を返してくれる API がありました。
Unix Timestamp converter REST API

UNIX time は、実はあまり馴染みがなかったのですが、馴染んでおくとどこかで役に立ちそうですね!
少なくとも「ナニソレ?美味しいの??」状態にはならなさそうです( ゚Д゚)

ではまた!(^^)/

参考にさせていただきましたm(_ _)m

MDN Web Docs - Date.parse
Google Apps Script 公式 - Utilities.formatDate(date, timeZone, format)
java.text - Class SimpleDateFormat
ウィキペディア(Wikipedia)- UNIX 時間