How can I convert
2012-01-18T11:45:00+01:00
(ISO 8601) to 1326883500
(unixtimestamp) in PHP?
Asked
Active
Viewed 4.0k times
44

John Slegers
- 45,213
- 22
- 199
- 169

Codler
- 10,951
- 6
- 52
- 65
2 Answers
67
This code converts an ISO 8601 datetime to a Unix timestamp in UTC.
echo date("U",strtotime('2012-01-18T11:45:00+01:00'));
longer version:
$dateTime = new DateTime('2012-01-18T11:45:00+01:00');
$dateTime->setTimezone(new DateTimeZone('UTC'));
$utcTimestamp = $dateTime->getTimestamp();
echo $utcTimestamp;
-
Thanks, didnt know strtotime knew about ISO dates – 472084 Jan 18 '12 at 10:57
-
@Codler in this case no. i thought you may want to use another format of input/output – k102 Jan 18 '12 at 11:16
22
To convert from ISO 8601 to unixtimestamp :
strtotime('2012-01-18T11:45:00+01:00');
// Output : 1326883500
To convert from unixtimestamp to ISO 8601 (timezone server) :
date_format(date_timestamp_set(new DateTime(), 1326883500), 'c');
// Output : 2012-01-18T11:45:00+01:00
To convert from unixtimestamp to ISO 8601 (GMT) :
date_format(date_create('@'. 1326883500), 'c') . "\n";
// Output : 2012-01-18T10:45:00+00:00
To convert from unixtimestamp to ISO 8601 (custom timezone) :
date_format(date_timestamp_set(new DateTime(), 1326883500)->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2012-01-18T05:45:00-05:00

John Slegers
- 45,213
- 22
- 199
- 169