GitHubのUNIXTIMEはY/M/Dの日時形式にスクリプトで置換すると便利

GitHubのUNIXTIMEを日時形式に変換

GitHub上にはCSVやTSVファイル内に10桁のUNIXTIMEが記載されていることがあるが、人間には1577804400のような数字の日時はひと目見ただけではわからない。

UNIXTIMEが含まれるCSVファイルのサンプル

しかし、2020/01/01 00:00:00のような日時形式であればすぐにわかるため、ChromeのConsole上で実行することで日時形式に変換できるスクリプトを使用すると確認しやすくなり便利である。
GitHubのUNIXTIMEはY/M/Dの日時形式にスクリプトで置換すると便利

UNIXTIMEを日時形式に変換するスクリプト

UNIXTIMEは10桁の数字と決まっているのでConsole上でJavaScriptの正規表現の/\d{10}/で検出してnew Date()を利用すれば簡単に変換できる。

if (/^\d{10}$/.test(timestamp)) {
  var now = new Date(timestamp * 1000)
  // 以下省略
}

日時形式に変換すればGitHubのフィルターで00:00:00などで絞り込みもできるようになるので便利。
日時形式に変換すればGitHubのフィルターで00:00:00などで絞り込みもできる

テキスト形式のカンマ区切りの対応

GitHub上に反映されているCSVやTSVは通常はtableで表示されるが、カンマ区切りのデータベースがテキスト形式で反映されることもあるため、そのようなケースにも対応できるよう以下のようにJavaScriptを作成した。

/*!
 * Convert UNIXTIME to Date
 * (c) iwb.jp
 * Released under the MIT License.
 */
function addZero(n) {
  return ('0' + n).slice(-2)
}
$$('.Box-body td').forEach(el => {
  var timestamp = parseInt(
    el.textContent
      .split(',')
      .filter(el => /^\d{10}$/.test(el))
  )
  if (/^\d{10}$/.test(timestamp)) {
    var now = new Date(timestamp * 1000)
    var d1 = [
      now.getFullYear(),
      addZero(now.getMonth() + 1),
      addZero(now.getDate())
    ].join('/')
    var d2 = [
      addZero(now.getHours()),
      addZero(now.getMinutes()),
      addZero(now.getSeconds())
    ].join(':')
    el.textContent = el.textContent.replace(/\d{10}/, d1 + ' ' + d2)
  }
})

これならカンマ区切りのデータベースがテキスト形式でも日時形式に変換することができる。

UNIXTIMEが含まれるテキストファイルのサンプル

UNIXTIMEを日時形式に変換するJavaScript