プロが教える店舗&オフィスのセキュリティ対策術

二つの日時があります。

日時A
object(DateTime)#1 (3) {
["date"]=>
string(26) "2017-02-21 05:30:50.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "Asia/Tokyo"

日時B
string(24) "2017-03-22T10:16:37+0000"

この差をPHPで求めたいのですが、
どのようにするのが一般的でしょうか?

最初からobjectかstringかに統一して作るべきなのかもしれませんが…。

質問者からの補足コメント

  • 日時の差は表示するのではなく、「差が30日以内であれば」という感じのif文の条件に使う予定です。

      補足日時:2017/03/23 05:58
  • できればstrtotimeを使わない方法でお願いします。

    「PHP: strtotime - Manual」
    http://php.net/manual/ja/function.strtotime.php
    >注意:
    > この関数を使って日付の足し算や引き算を行うことはおすすめできません。
    > PHP 5.3 以降なら DateTime::add() や DateTime::sub() を、
    > そして PHP 5.2 なら DateTime::modify() を使いましょう。

      補足日時:2017/03/23 06:31
  • HAPPY

    stak1111さん、回答を読み直してみました。
    次のような意味ですね。
    string(24)の方のデータを new DateTime() の中に入れれば、
    DateTime()の形式で統一できて、容易に比較できる。
    ありがとうございました。

    $a = new DateTime('2017-02-21 05:30:50.000000');
    $b = '2017-03-22T10:16:37+0000';
    $b = new DateTime($b);
    echo $a->diff($b)->format('%R%a days'); // +29 days
    echo "<br>";
    if($a > $b){
    echo "aの方が大きい";
    }elseif($a < $b){
    echo "bの方が大きい";
    }else{
    echo "同じ";
    }
    // bの方が大きい

      補足日時:2017/03/26 15:58

A 回答 (2件)

$a = new DateTime('2017-02-21 05:30:50.000000');


$b = new DateTIme('2017-03-22T10:16:37+0000');
echo $a->diff($b)->format('%R%a days'); // +29 days
    • good
    • 2
この回答へのお礼

ありがとうございます。
想定していたのはfacebookのJSONで取得した日時をphpで生成した日時と比較することなので、
片方はどうしても「string(24) "2017-03-22T10:16:37+0000"」のような形式になってしまいます。
phpで日時を作成する時に「date("Y/m/d H:i:s")」のようにすれば合わせられるのですが、
「DateTimeを使いたい」とこだわってしまって、方法が分からない状態です。

お礼日時:2017/03/24 23:50

> できればstrtotimeを使わない方法



strtotimeを使わないということは自前で文字列を日付型に変換するということですよ
であれば任意の箇所の文字を抜き出して、解釈してください
    • good
    • 0
この回答へのお礼

やはり簡単にはできないのですね。
インターネットで検索してもstrtotimeを使う方法ばかりで、
使わない方が良いのではなかったかなと疑問だったのですが、
楽をしたければ使うしかなさそうですね。
ありがとうございました。

お礼日時:2017/03/23 11:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!