pagetaka

写真、PC、ネット、岡山、旅の話題をお届けします

PHP:abraham/twitteroauth表示のtwitter日付を日本時間に変える

f:id:PageTAKA:20160214132734j:plaingithub.com
twitterのデータを収集するのにPHPAPIを使います。そのときの関門になるのが「OAuth」認証です。
かなり面倒なことみたいで、この記事の冒頭にリンク紹介したライブラリをつかえばわりとラクチンができます。使用するファイル名が変わっていたりして苦労しましたが、昨日までになんとか読み取り・表示までできました。
pagetaka.hatenablog.com

abraham/twitteroauth:日付表示が世界標準時

「abraham/twitteroauth」を使ってtweetを取り込んでみたら、日付が以下のようなことになっていました(部分)。

[created_at] => Sun Feb 14 03:58:11 +0000 2016

並びは、曜日・月・日・時:分:秒・時差・年というような意味かと思います。あわせて世界標準時になっている…。
これを、2016年2月14日とかのように日本人に見やすい表示にするとともに、時差分を調整してやらなければなりませぬ。

PHP:日付表示形式は、適宜作れるみたい

detail.chiebukuro.yahoo.co.jp
↑爺のやりたいことは、およそ誰かがすでにナヤミ、ネット上で回答が見つかる、というような流れであります。
日付関係の部品の並びを矯正するような作業かと思いました。強制ともいえそうですが…。

PHP:東京時間に直すのは割りと簡単。用意された関数がある

raining.bear-life.com
↑東京時間というか、日本時間というか、そういうふうにするのは、関数を使えばよさそうです。こちらもネット上にコタエがありました。

PHP:abraham/twitteroauthのtweet日付表示を東京時間、日本表示に変更する超簡単例

爺がPHPを書いてみたです。特定の日付を直接セットしてます。実装では、変数とか、別ファイル呼び出しとかということに…。また、HTMLはまったく意識してないです。

1行書き加えで解決(↓2/15、プロバイダのサーバに置いて試したらNGでした。チェックしてるです。わかる方、ご教授のほど~ペコリ。

2/15:レンサバに置いて動かなかったのでちょっとあわてた。1行書きくわえたけど、この方法で良いかどうか、評価できず…どうなんだろう。

<?php
//abraham/twitteroauthで取得した[created_at]の値(世界標準時表示)を日本的に変換表示
echo changeDate('Sun Feb 14 03:58:11 +0000 2016'); //カッコの中の日付文字列は、関数に行って$setDateとして扱われる→関数から返ってきた値(関数のreturnから)を表示(echo)する

//上から動作しここまでで終了

//関数:echo changeDate()から呼び出され値を返す
function changeDate($setDate) {
    date_default_timezone_set('UTC'); //←2/15、この1行追加したです。
	$dateForm ='D M d H:i:s O Y'; //整形前の日付情報の並び
	$date = DateTime::createFromFormat($dateForm, $setDate); //処理する日付情報をあてこむ
	$date->setTimeZone(new DateTimeZone('Asia/Tokyo')); //東京時間に矯正
	return $date->format('Y-m-d H:i:s'); //整形後の日付情報の並びを矯正し、値をchangeDateへ返す
}
?>
使用にあたって
  1. abraham/twitteroauthをつかってtwitterデータを取得したが、日本型の表示でなくて困っている
  2. PHPが動くwebサーバを使える
  3. 上のソースをPHPファイルにし保存、webサーバにFTPで送る
  4. webサーバに置いたPHPファイルをURLで呼び出す

以上です。
結果は「2016-02-14 12:58:11」と表示されます。