YouTube Data API v3が返す snippet.publishedAt の値を日本時間に変換する

YouTube Data APIがレスポンスとして返すリソース情報の snippet.publishedAt プロパティには ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) 形式で日時を表す文字列が入っている。

snippet.publishedAt に入っている文字列の例
2020-07-01T00:57:09Z

これを日本時間に変換するには DateTime オブジェクトにタイムゾーン "Asia/Tokyo" を設定すれば良い。


//...省略...

  $response = $youtube->playlistItems->listPlaylistItems('snippet', $params);

  foreach ($response['items'] as $item)
  {
    $snippet = $item['snippet'];

    echo "publishedAt: {$snippet['publishedAt']}\n";
    /* 出力
    publishedAt: 2020-07-01T00:57:09Z
    */

    $dt = new DateTime($snippet['publishedAt']);
    $dt->setTimezone(new DateTimeZone('Asia/Tokyo'));
    echo $dt->format("Y-m-d H:i:s e") . "\n";
    /* 出力
    2020-07-01 09:57:09 Asia/Tokyo
    */
  }

//...省略...