web-dev-qa-db-ja.com

PHPでdatetimeをISO 8601に変換する方法

時間を2010-12-30 23:21:46からISO 8601日付形式に変換するにはどうすればよいですか? (-_-;)

85
wow

オブジェクト指向

これが推奨される方法です。

$datetime = new DateTime('2010-12-30 23:21:46');

echo $datetime->format(DateTime::ATOM); // Updated ISO8601

手続き型

古いバージョンのPHPの場合、または手続き型コードに慣れている場合。

echo date(DATE_ISO8601, strtotime('2010-12-30 23:21:46'));
206
alex

PHP 5の後、これを使用できます:echo date("c");はISO 8601形式の日時を形成します。

http://ideone.com/nD7piL

コメントに関する注意:

this に関しては、これらの式は両方ともタイムゾーン、基本形式±[hh]:[mm], ±[hh][mm], or ±[hh]で有効です。

ただし、+ 0X:00が正しく、+ 0X00は拡張された使用法では正しくないことに注意してください。したがって、date("c")を使用することをお勧めします。同様の議論 こちら

34
trante

ISO 8601からunixtimestampに変換する方法:

strtotime('2012-01-18T11:45:00+01:00');
// Output : 1326883500

UnixtimestampからISO 8601(タイムゾーンサーバー)に変換する方法:

date_format(date_timestamp_set(new DateTime(), 1326883500), 'c');
// Output : 2012-01-18T11:45:00+01:00

UnixtimestampからISO 8601(GMT)に変換する方法:

date_format(date_create('@'. 1326883500), 'c') . "\n";
// Output : 2012-01-18T10:45:00+00:00

UnixtimestampからISO 8601(カスタムタイムゾーン)に変換する方法:

date_format(date_timestamp_set(new DateTime(), 1326883500)->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2012-01-18T05:45:00-05:00
3
John Slegers

Datetime-localに値を設定しようとすると

date("Y-m-d\TH:i",strtotime('2010-12-30 23:21:46'));

//output : 2010-12-30T23:21
0
Rúbia Alves