LoginSignup
8
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-12-22

調べたきっかけ

とある 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 時間

8
3
1

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
8
3