Hướng dẫn php createfromformat iso 8601 - php createfromformat iso 8601

Không ai được đề cập để sử dụng DATE_ATOM theo như tôi biết PHPS thực hiện đúng nhất ISO 8601. ít nhất nó sẽ hoạt động trong 3 trong số này:

format(DATE_ATOM)
);

foreach($dates as $d) {

    $res = \DateTime::createFromFormat(DATE_ATOM, $d);

    echo "try $d: \n";
    var_dump($res);
    echo "\n\n";
}

?>

Để có thể phân tích tất cả chúng, tôi đã viết một chức năng nhỏ:

 0) {
        return $success[0];
    }
    return false;
}

// Test
$dates = array(
    "2010-12-07T23:00:00.000Z",
    "2010-12-07T23:00:00",
    "2010-12-07T23:00:00Z",
    "2010-12-07T23:00:00+01:00",
    (new \DateTime("now"))->format(DATE_ATOM)
);

foreach($dates as $d) {

    $res = parse_iso_8601($d);

    echo "try $d: \n";
    var_dump($res);
    echo "\n\n";
}

?>

Như @glutexo đã đề cập, nó chỉ hoạt động nếu chỉ có 1 đến 6 chữ số chính xác cho phần thập phân. Hãy thoải mái để cải thiện nó.

$ dateTime-> setTimezone (new \ datetimezone ('zulu')));

echo "cần sử dụng định dạng ('u') và so sánh những người khi được coi là số nguyên" ";

echo'now với phân số (p): '. \ DateTime :: createdFromFormat ('U.U', Sprintf ('%. 6f', microtime (true)))-> định dạng ('y-m-d \ th: i: s.up');
echo'now với phân số (o): '. \ DateTime :: createdFromFormat ('U.U', Sprintf ('%. 6f', microtime (true)))-> định dạng ('y-m-d \ th: i: s.uo');'default locale: ' . \Locale::getDefault(); 'default locale: ' . \Locale::getDefault();
echophp_eol;PHP_EOL; PHP_EOL;
echo "cần sử dụng định dạng ('u') và so sánh những người khi được coi là số nguyên" ";'default timezone: ' . \date_default_timezone_get(); 'default timezone: ' . \date_default_timezone_get();
echophp_eol;PHP_EOL; PHP_EOL;
echo'now với phân số (p): '. \ DateTime :: createdFromFormat ('U.U', Sprintf ('%. 6f', microtime (true)))-> định dạng ('y-m-d \ th: i: s.up');
echo'now với phân số (o): '. \ DateTime :: createdFromFormat ('U.U', Sprintf ('%. 6f', microtime (true)))-> định dạng ('y-m-d \ th: i: s.uo');'default locale: ' . \Locale::getDefault();
echophp_eol;PHP_EOL;
echo "cần sử dụng định dạng ('u') và so sánh những người khi được coi là số nguyên" ";'default timezone: ' . \date_default_timezone_get(); dt2 = \DateTime::createFromFormat('Y-m-d\TH:m:i.uO', '2012-10-17');
echo'now với phân số (o): '. \ DateTime :: createdFromFormat ('U.U', Sprintf ('%. 6f', microtime (true)))-> định dạng ('y-m-d \ th: i: s.uo');$dt2); // false
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiềudt2 = new \DateTime('2012-10-17');
Tầng ($ datetime-> định dạng ("u") / 1000),dt2 = \DateTime::createFromFormat('Y-m-d\TH:m:i.uO', '2012-10-17'); '2012-10-17 formatted => ' . $dt2->format('Y-m-d\TH:i:s.uP');
echophp_eol;PHP_EOL; PHP_EOL;
echo "cần sử dụng định dạng ('u') và so sánh những người khi được coi là số nguyên" ";'default timezone: ' . \date_default_timezone_get(); dt3 = \DateTime::createFromFormat('Y-m-d\TH:m:i.uO', '1990-12-31T23:59:60Z'); // leap second
echo'now với phân số (o): '. \ DateTime :: createdFromFormat ('U.U', Sprintf ('%. 6f', microtime (true)))-> định dạng ('y-m-d \ th: i: s.uo');$dt3); // false
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiềudt3 = new \DateTime('1990-12-31T23:59:60Z');
Tầng ($ datetime-> định dạng ("u") / 1000),dt2 = \DateTime::createFromFormat('Y-m-d\TH:m:i.uO', '2012-10-17'); '1990-12-31T23:59:60Z formatted => ' . $dt3->format('Y-m-d\TH:i:s.uP');
echophp_eol;PHP_EOL; PHP_EOL;
echo "cần sử dụng định dạng ('u') và so sánh những người khi được coi là số nguyên" ";'default timezone: ' . \date_default_timezone_get(); dt4 = \DateTime::createFromFormat(\DateTime::ISO8601, '2004-02-13T15:19:21+00:00');
echo'now với phân số (o): '. \ DateTime :: createdFromFormat ('U.U', Sprintf ('%. 6f', microtime (true)))-> định dạng ('y-m-d \ th: i: s.uo'); '2004-02-13T15:19:21+00:00 formatted => ' . $dt4->format('Y-m-d\TH:i:s.uP');
echophp_eol;PHP_EOL; PHP_EOL;
echo "cần sử dụng định dạng ('u') và so sánh những người khi được coi là số nguyên" ";'default timezone: ' . \date_default_timezone_get(); dt5 = \DateTime::createFromFormat('Y-m-d\TH:m:i.uO', '1985-04-12T23:20:50.52Z');
echo'now với phân số (o): '. \ DateTime :: createdFromFormat ('U.U', Sprintf ('%. 6f', microtime (true)))-> định dạng ('y-m-d \ th: i: s.uo'); '1985-04-12T23:20:50.52Z formatted => ' . $dt5->format('Y-m-d\TH:i:s.uP');
echophp_eol;PHP_EOL; PHP_EOL;
echo "cần sử dụng định dạng ('u') và so sánh những người khi được coi là số nguyên" ";'default timezone: ' . \date_default_timezone_get(); '\DateTime::createFromFormat(DateTime::ISO8601, "1985-04-12T23:20:50.52Z") => ';
echo'now với phân số (o): '. \ DateTime :: createdFromFormat ('U.U', Sprintf ('%. 6f', microtime (true)))-> định dạng ('y-m-d \ th: i: s.uo');datetime = \DateTime::createFromFormat(\DateTime::ISO8601, '1985-04-12T23:20:50.52Z');
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều$datetime);
Tầng ($ datetime-> định dạng ("u") / 1000),dt2 = \DateTime::createFromFormat('Y-m-d\TH:m:i.uO', '2012-10-17'); 'new \DateTime("1985-04-12T23:20:50.52Z") => ';
Echo'default Locale: '. \ Locale :: getDefault ();$dt2); // falsedatetime = new \DateTime('1985-04-12T23:20:50.52Z');
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều$datetime);
Tầng ($ datetime-> định dạng ("u") / 1000),dt2 = \DateTime::createFromFormat('Y-m-d\TH:m:i.uO', '2012-10-17'); '1985-04-12T23:20:50.52Z formatted (P) => ' . $datetime->format('Y-m-d\TH:i:s.uP');
echophp_eol;PHP_EOL; PHP_EOL;
echo "cần sử dụng định dạng ('u') và so sánh những người khi được coi là số nguyên" ";'default timezone: ' . \date_default_timezone_get();
Echo'default Locale: '. \ Locale :: getDefault ();$dt2); // falsedatetime = new \DateTime('1985-04-12T23:20:50.52Z');
Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều$datetime);
Tầng ($ datetime-> định dạng ("u") / 1000),dt2 = \DateTime::createFromFormat('Y-m-d\TH:m:i.uO', '2012-10-17'); datetimez = clone $datetime;
$ dt5 = \ dateTime :: createdFromFormat ('y-m-d \ th: m: i.uo', '1985-04-12t23: 20: 50.52z');datetime->setTimeZone(new \DateTimeZone('Zulu'));
echo'1985-04-12t23: 20: 50,52z ĐịNH dạng => '. $ dt5-> định dạng ('y-m-d \ th: i: s.up');datetime->setTimeZone(new \DateTimeZone('Etc/UTC'));
echo '\ dateTime :: createdFromFormat (dateTime :: iso8601, "1985-04-12t23: 20: 50.52z") =>';datetime->setTimeZone(new \DateTimeZone('UTC'));
$ dateTime = \ dateTime :: createdFromFormat (\ datetime :: ISO8601, '1985-04-12T23: 20: 50.52z'); '1985-04-12T23: 20: 50.52Z z định dạng $ dateTime-> định dạng ('y-m-d \ th: i: s.u \ z'); '1985-04-12T23:20:50.52Z clone Z formatted => ' . $datetime->format('Y-m-d\TH:i:s.u\Z');
echophp_eol; php_eol; PHP_EOL;
var_dump ($ datetime); '1985-04-12T23: 20: 50.52z clone z định dạng =>'. $ dateTime-> định dạng ('y-m-d \ th: i: s.up'); '1985-04-12T23:20:50.52Z clone Z formatted => ' . $datetime->format('Y-m-d\TH:i:s.uP');
echophp_eol; php_eol; PHP_EOL;
var_dump ($ datetime); '1985-04-12T23: 20: 50.52z clone z định dạng =>'. $ dateTime-> định dạng ('y-m-d \ th: i: s.up');iso8601_p = sprintf(
echo'New \ dateTime ("1985-04-12T23: 20: 50.52z") => '; iso8601_p = sprintf (%s%03d%s",
$ dateTime = new \ dateTime ('1985-04-12T23: 20: 50,52z');%s%03d%s ",datetime->format("Y-m-d\TH:i:s\."),
Echo'1985-04-12t23: 20: 50,52z ĐượC ĐịNH DạNG (p) => '. $ dateTime-> định dạng ('y-m-d \ th: i: s.up'); datetime-> định dạng ("y-m-d \ th: i: s \."),$datetime->format("u") / 1000),
// $ dateTime = \ dateTime :: createdFromFormat ('c', '1985-04-12t23: 20: 50.52z'); // thất bại $ dateTime-> định dạng ("u") / 1000),datetime->format("P")
$ datetimez = clone $ dateTime; datetime-> định dạng ("p")
$ dateTime-> setTimezone (new \ datetimezone ('zulu')))); '1985-04-12T23:20:50.52Z clone custom formatted P => ' . $iso8601_p;
echophp_eol; php_eol; PHP_EOL;
var_dump ($ datetime); '1985-04-12T23: 20: 50.52z clone z định dạng =>'. $ dateTime-> định dạng ('y-m-d \ th: i: s.up');iso8601_z = sprintf(
echo'New \ dateTime ("1985-04-12T23: 20: 50.52z") => '; iso8601_p = sprintf (%s%03dZ",
$ dateTime = new \ dateTime ('1985-04-12T23: 20: 50,52z');%s%03d%s ",datetime->format("Y-m-d\TH:i:s\."),
Echo'1985-04-12t23: 20: 50,52z ĐượC ĐịNH DạNG (p) => '. $ dateTime-> định dạng ('y-m-d \ th: i: s.up'); datetime-> định dạng ("y-m-d \ th: i: s \."),$datetime->format("u") / 1000)
$ datetimez = clone $ dateTime; datetime-> định dạng ("p")
$ dateTime-> setTimezone (new \ datetimezone ('zulu')))); '1985-04-12T23:20:50.52Z clone custom formatted Z => ' . $iso8601_z;
echophp_eol; php_eol; PHP_EOL;
var_dump ($ datetime); '1985-04-12T23: 20: 50.52z clone z định dạng =>'. $ dateTime-> định dạng ('y-m-d \ th: i: s.up'); '\DateTime::diff() with fractions of a second granularity is not possible…';
echophp_eol; php_eol; PHP_EOL;
var_dump ($ datetime); '1985-04-12T23: 20: 50.52z clone z định dạng =>'. $ dateTime-> định dạng ('y-m-d \ th: i: s.up'); "Propably need to use format('u') and compare those when treated as integer…";
echophp_eol; php_eol; PHP_EOL;
var_dump ($ datetime); '1985-04-12T23: 20: 50.52z clone z định dạng =>'. $ dateTime-> định dạng ('y-m-d \ th: i: s.up'); 'NOW with fractions (P): ' . \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)))->format('Y-m-d\TH:i:s.uP');
echophp_eol; php_eol; PHP_EOL;
var_dump ($ datetime); '1985-04-12T23: 20: 50.52z clone z định dạng =>'. $ dateTime-> định dạng ('y-m-d \ th: i: s.up'); 'NOW with fractions (O): ' . \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)))->format('Y-m-d\TH:i:s.uO');
echophp_eol; php_eol; PHP_EOL;