二つの日時があります。
日時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かに統一して作るべきなのかもしれませんが…。
No.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
ありがとうございます。
想定していたのはfacebookのJSONで取得した日時をphpで生成した日時と比較することなので、
片方はどうしても「string(24) "2017-03-22T10:16:37+0000"」のような形式になってしまいます。
phpで日時を作成する時に「date("Y/m/d H:i:s")」のようにすれば合わせられるのですが、
「DateTimeを使いたい」とこだわってしまって、方法が分からない状態です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Visual Basic(VBA) vb.net どうしてイコールにならないのでしょうか 4 2022/09/29 12:21
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
開始と終了を指定して、その間...
-
プルダウンメニューの値をDBに...
-
C言語でシステム日付との差を...
-
日付フォーマット
-
差分の月数を算出する方法
-
C言語を使って、ある特定の日の...
-
MySQLのdate型をphpで○年○月○日...
-
おかしなところがあればどんな...
-
DMMの動画を全件取得したのです...
-
Yahoo! JAPAN IDを新規取得でき...
-
Dosブロンプトでtabを出力したい
-
フォームを使わずにPOST送信す...
-
アクセスの度にIPアドレスを変...
-
【C#】DataGridViewの最大列数...
-
ローカルのコンピュータ名を取...
-
【C#】FindWindowExの使い方を...
-
先日NISAの投資信託で、初めて...
-
初歩的な質問だと思います。IF...
-
Parse error というエラーの対...
-
バッチファイルで、全てのウィ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
昨日の日付を取得するVBscript
-
substrの使い方について教えて...
-
一週間の表示の仕方と文字表示
-
PHPで以下のような占いプログラ...
-
C言語を使って、ある特定の日の...
-
アップロードしたファイル名に...
-
PHPでカレンダーを作る(縦書き)
-
プルダウンメニューの値をDBに...
-
第何週かを取得したい
-
日付によって画像を変える
-
差分の月数を算出する方法
-
SQL:TIMESTAMPの期間検索を指...
-
PHP 指定した期間だけ表示した...
-
C言語でシステム日付との差を...
-
プルダウンで今日以降の日付を...
-
Accessコンボボックス
-
MovableTypeで、ある日付を過ぎ...
-
Java Scriptで、ある日付に加算...
おすすめ情報
日時の差は表示するのではなく、「差が30日以内であれば」という感じのif文の条件に使う予定です。
できればstrtotimeを使わない方法でお願いします。
「PHP: strtotime - Manual」
http://php.net/manual/ja/function.strtotime.php
>注意:
> この関数を使って日付の足し算や引き算を行うことはおすすめできません。
> PHP 5.3 以降なら DateTime::add() や DateTime::sub() を、
> そして PHP 5.2 なら DateTime::modify() を使いましょう。
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の方が大きい