猿问

DateTime 解析时间字符串失败

我在从 JSON 带来的数组中为每个项目传递 2 个日期和时间字符串。


这些日期已成功存储在数组中,但DateTime由于某种原因函数不喜欢它们。


我试过使用不同的格式,只是日期,只是时间,但没有任何效果。


我提供了我正在使用的 JSON 文件和我的 PHP 测试文件。


<?php 

    error_reporting(E_ALL);

    ini_set('display_errors', 1);


    $revokes = jsonDecode(file_get_contents("../revokes.json"), true);


    $certificates = $revokes['certificates'];


    // Prints the revokes array

    // print_r($revokes);


    $dates = array();


    foreach ($certificates as $certificate_key => $certificate) {

        $signed = $certificate['signed'];

        $revoked = $certificate['revoked'];

        $dates[] = array(

            "signed" => $signed,

            "revoked" => $revoked

        );

    }


    // Prints the dates

    // print_r($dates);


    $intervals = array();

    foreach ($dates as $key) {


        $newTimeAdd = new DateTime($key["signed"]);

        $newTimeRead = new DateTime($key["revoked"]);

        $interval = $newTimeAdd->diff($newTimeRead);


        // returns 0 on all elements of the interval array.

        // var_dump($interval);


        $intervals[] = $interval->days;//get days

    }

    if(!empty($intervals)) {

        $average = average($intervals);

    }


    // Prints nothing

    // print_r($intervals); 



    function average($arr) {

        return array_sum($arr)/count($arr);

    }

PHP约会时间日期时间格式


哔哔one
浏览 154回答 1
1回答

一只斗牛犬

您的日期格式为欧洲格式 (DD/MM/YYYY),这意味着您需要使用DateTime::createFromFormat()指定正确的格式才能DateTime正确处理它。这是由于 P HP 在看到 NN/NN/NNNN 日期格式时假设美国日期格式。<?php$json = json_decode('{    "lifeExp": "2 Days",    "certificates": [        {            "name": "CCS Group Pte Ltd",            "signed": "22/05/2020 10:31:00",            "revoked": "23/05/2020 5:40:00",            "files": {                "p12": "certificates/:id/certificate.p12",                "pem": "certificates/:id/certificate.pem",                "key": "certificates/:id/certificate.key",                "password": "certificates/:id/certificate.password"            }        },        {            "name": "Hoola Inc",            "signed": "16/05/2020 12:40:00",            "revoked": "19/05/2020 04:00:00",            "files": {                "p12": "certificates/:id/certificate.p12",                "pem": "certificates/:id/certificate.pem",                "key": "certificates/:id/certificate.key",                "password": "certificates/:id/certificate.password"            }        }    ]}', true);$signed = $json['certificates'][1]['signed'];$revoked = $json['certificates'][1]['revoked'];$newTimeAdd  = DateTime::createFromFormat('d/m/Y H:i:s', $signed);$newTimeRead = DateTime::createFromFormat('d/m/Y H:i:s', $revoked);$interval    = $newTimeAdd->diff($newTimeRead);echo $interval->days;输出2
随时随地看视频慕课网APP
我要回答