53551


日付のみのデータを配列から取りたいのですがうまくいきません。

[code]

    <?php var_dump($date->date); ?>
    
[/code]

の結果が

[code]

    object(Illuminate\Support\Carbon)[1310]
      public 'date' => string '2019-03-19 16:00:00.000000' (length=26)
      public 'timezone_type' => int 3
      public 'timezone' => string 'Asia/Tokyo' (length=10)
    
[/code]

でした。この`'date' => string '2019-03-19 16:00:00.000000'
(length=26)`の部分を取り、のちにバリデーションに使用しようと思っています。

どうすればとれるでしょうか？

・環境  
laravel5.6  
php7.1.27

追記：  
他の記入箇所でもその配列を使用するためなるべく同じやり方に統一させたいという意向です。


CC BY-SA 4.0
2019-03-19T02:23:56.037
53539
2019-03-19T11:49:22.457
2019-03-19T06:48:49.527
19110
31799
question
php html laravel
配列のほしいデータのみを取り出す


丁度いい記事がありました。質問のデータが「配列」だと考えているのは、誤解ですね。  
DateTimeクラスのオブジェクトを構成するプロパティを目視できるように表示したものです。

[Why can't I access DateTime->date in PHP's DateTime class? Is it a
bug?](https://stackoverflow.com/q/14084222/9014308)

> PHPのDateTimeクラスでDateTime-> dateにアクセスできないのはなぜですか？それはバグですか？
>
> `DateTime`クラスを使用して、次のコードを実行しようとした場合：
[code]

>     $mydate = new DateTime();
>     echo $mydate->date;
>  
[/code]

>
> このエラーメッセージが表示されます
[code]

>     Notice: Undefined property: DateTime::$date...
>  
[/code]

>
>
> 変数`$mydate`に対して`var_dump()`を実行すると、このプロパティが存在し、一般にアクセス可能であることが明確に示されるため、これは意味がありません。
[code]

>     var_dump($mydate);
>  
>     object(DateTime)[1]
>       public 'date' => string '2012-12-29 17:19:25' (length=19)
>       public 'timezone_type' => int 3
>       public 'timezone' => string 'UTC' (length=3)
>  
[/code]

>
> これはPHPのバグですか？それとも私は何か問題がありますか？私はPHP 5.4.3を使用しています。

それに対しての答えがこれです。

> これは[既知の問題](https://bugs.php.net/bug.php?id=49382)です。
>
> 利用可能な日付は、実際には `var_dump()` のサポートによる副作用です。 - derick@php.net
>
> 何らかの理由で、あなたはそのプロパティにアクセスすることはできないが、とにかく `var_dump`
> はそれを表示します。本当にその形式で日付を取得したい場合は、[`DateTime::format()`](http://php.net/manual/en/datetime.format.php)
> 関数を使用してください。
[code]

>     echo $mydate->format('Y-m-d H:i:s');
>  
[/code]

* * *

その上で質問のようにマイクロ秒まで文字列にしたいのであれば、`u` を使うことになるでしょう。  
[PHPでマイクロ秒精度のDateTimeを生成する際の注意点](http://ezolab-blog.net/blog-entry-22.html)

>
[code]

>     <?php
>     // 現在日時を生成
>     $now = new \DateTime();
>     // 出力
>     echo $now->format('Y-m-d H:i:s.u');
>     ?>
>  
[/code]

上記の結果例

>
[code]

>     2015-10-24 02:37:31.000000
>  
[/code]

さらに関連して版数による注意事項があるようです。  
[PHP
7.2.0からDateTimeでミリ秒表示するときの丸め処理が変わった話](https://hnw.hatenablog.com/entry/20180401)


CC BY-SA 4.0
2019-03-19T10:47:01.320
53551
2019-03-19T11:49:22.457
2019-03-19T11:49:22.457
26370
26370
53539
answer