[PHP-users 35085] ISO 8601 日付が上手く parse されない
shige02 @ mac.com
shige02 @ mac.com
2010年 4月 1日 (木) 20:20:47 JST
重松です。
表題の通りなんですが、今 XML からデータを読み込む必要があり、ISO 8601 日付という形式らしいんですが、
<ContactXMLItem lastModifiedDate="2009-04-10T01:57:00+09:00">
というような感じで整形されています。
ちょっと古いのですが、http://www.kanzaki.com/docs/html/dtf.html を読むと、XML の場合、「W3C-DTFの年月日時分秒をフルに表すフォーマット(5)(6)がdateTime型として定義されています。」というくだりがあり、要するに、秒の部分に、小数点以下が来ることもあるように読めるのですが、自分が読み込もうとしているデータにはそのような形式は見受けられませんでした。
こういうのって、RSS リーダーなんか XML なんだから、よく使うと思うんで、自分で書かないでもあるだろうと思って調べて見たのですが、php 5 から date() に c というフォーマットが追加になったようで、これを使えば楽できると思ったんですが、動きません。
何か勘違いしているんでしょうか?
<?php
date_default_timezone_set('Asia/Tokyo');
$str = date('c');
echo "$str\n\n";
var_dump(date_parse_from_format('c',$str));
?>
2010-04-01T20:15:51+09:00
array(12) {
["year"]=>
bool(false)
["month"]=>
bool(false)
["day"]=>
bool(false)
["hour"]=>
bool(false)
["minute"]=>
bool(false)
["second"]=>
bool(false)
["fraction"]=>
bool(false)
["warning_count"]=>
int(0)
["warnings"]=>
array(0) {
}
["error_count"]=>
int(2)
["errors"]=>
array(2) {
[0]=>
string(35) "The format separator does not match"
[1]=>
string(13) "Trailing data"
}
["is_localtime"]=>
bool(false)
}
$ php -v
PHP 5.3.1 (cli) (built: Feb 11 2010 02:32:22)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
--
Osamu Shigematsu
PHP-users メーリングリストの案内