私は次のような日付文字列を持っています:
"2012 28 Nov 21:00 CET"
strtotime("2012 28 Nov 21:00 CET")
falseを返します。
この文字列を日付オブジェクトに変換する方法はありますか、それとも別の形式にする必要がありますか?
私は次のような日付文字列を持っています:
"2012 28 Nov 21:00 CET"
strtotime("2012 28 Nov 21:00 CET")
falseを返します。
この文字列を日付オブジェクトに変換する方法はありますか、それとも別の形式にする必要がありますか?
2012 28 Nov 21:00 CET
奇妙な日付/時刻形式です。YDM?どこで手に入れますか?
いずれにせよ、DateTimeオブジェクトには、次のcreateFromFormat
ことをより適切に解析するメソッドがあります。
$dt = DateTime::createFromFormat("Y d M H:i T", '2012 28 Nov 21:00 CET');
$ts = $dt->getTimestamp();
echo $ts; // 1354132800
ここで試してみてください:http://codepad.viper-7.com/NfAmcw
strtotime
YDMではない「英語のテキスト日時」(マニュアルによる)を期待しています。falseを返すときはいつでもstrtotime
、このアプリケーションで予期されている文字列を理解しません。マニュアルページの注記は、この問題を扱っています。
ノート:
m / d / yまたはdmy形式の日付は、さまざまなコンポーネント間のセパレーターを調べることで明確になります。セパレーターがスラッシュ(/)の場合、アメリカのm / d/yが想定されます。一方、区切り文字がダッシュ(-)またはドット(。)の場合、ヨーロッパのdmy形式が想定されます。
あいまいさの可能性を回避するために、可能な場合はISO 8601(YYYY-MM-DD)の日付またはDateTime :: createFromFormat()を使用することをお勧めします。
それも同様に、DateTime
日付や時刻とのやり取りに優れたツールです。
ドキュメンテーション
DateTime
クラス-http : //www.php.net/manual/en/class.datetime.phpDateTime::createFromFormat
-http ://www.php.net/manual/en/datetime.createfromformat.phpstrtotime
-http ://php.net/manual/en/function.strtotime.phpdate
(日付形式の文字列も一覧表示されます)-http://php.net/manual/en/function.date.phpstrtotimeは日付オブジェクトを作成せず、単に入力を解析しようとし、UNIXタイムスタンプを返します。
ここで有効な形式を見つけることができます:http ://www.php.net/manual/en/datetime.formats.php
echo strtotime("2012-11-28T21:00:00+01:00");
出力します1354132800
php DateTimeオブジェクトを作成するには、次のようにします。
$date = new DateTime('2012-11-28T21:00:00+01:00');
echo $date->format('Y-m-d H:i:s');