44

How can I convert 2012-01-18T11:45:00+01:00 (ISO 8601) to 1326883500 (unixtimestamp) in PHP?

John Slegers
  • 45,213
  • 22
  • 199
  • 169
Codler
  • 10,951
  • 6
  • 52
  • 65

2 Answers2

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;
Sabrina
  • 2,531
  • 1
  • 32
  • 30
k102
  • 7,861
  • 7
  • 49
  • 69
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