share facebook facebook twitter menu hatena pocket slack

2017.11.06 MON

JSON内のUNIX時間を人が読めるようにしよう!

近藤 寛志

WRITTEN BY 近藤 寛志

UNIX時間を脳内で日付に変更できない人向けの内容です。
jqコマンドで私でもパッと見て読めるようにします!

使うもの

サンプルJSON

適当なJSONを用意します。

{"time":[1500000000,1500100000,1500200000,1500300000]}

見やすくする

JSONをコピーしてコマンド実行。
コピー部分はよしなに。

$ pbpaste | jq '.time[] |= strftime("%Y-%m-%dT%H:%M:%SZ")'

出力

{
  "time": [
    "2017-07-14T02:40:00Z",
    "2017-07-15T06:26:40Z",
    "2017-07-16T10:13:20Z",
    "2017-07-17T14:00:00Z"
  ]
}

私でも読めます!!

UNIX時間がstringで入っている場合もあるかもしれない

こんなJSONです。

{"time":["1500000000","1500100000","1500200000","1500300000"]}

コマンドと出力

$ pbpaste | jq '.time[] |= (tonumber | strftime("%Y-%m-%dT%H:%M:%SZ"))'
{
  "time": [
    "2017-07-14T02:40:00Z",
    "2017-07-15T06:26:40Z",
    "2017-07-16T10:13:20Z",
    "2017-07-17T14:00:00Z"
  ]
}

読めます!!!

複数要素にUNIX時間が入っている場合

このようなJSONです。
time[].starttime[].endの2要素があります。

{"time":[{"start":1500000000,"end":1500100000},{"start":1500200000,"end":1500300000}]}

見やすくする

JSONをコピーしてコマンド実行

$ pbpaste | jq '.time[].start |= strftime("%Y-%m-%dT%H:%M:%SZ") | .time[].end |= strftime("%Y-%m-%dT%H:%M:%SZ")'
{
  "time": [
    {
      "start": "2017-07-14T02:40:00Z",
      "end": "2017-07-15T06:26:40Z"
    },
    {
      "start": "2017-07-16T10:13:20Z",
      "end": "2017-07-17T14:00:00Z"
    }
  ]
}

無理やり感あふれるコマンドができあがりました(´・_・`)
詳しい方、いい方法あったら教えてくださいー

元記事はこちら

JSON内のUNIX時間を人が読めるようにしよう!

近藤 寛志

近藤 寛志

スマホアプリ開発のグループリーダー。脳内デバッグやっています。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。