When you describe your EC2 instances, you get an XML node of:-
[launchTime] => 2011-10-14T09:22:37.000Z
I'd like to use this command with PHP, to measure the number of seconds the instance has been on and take actions.
It seems to me there's a number of ways to break this down, including explodes and string searches and regex. But, what is the best way?
FINAL ANSWER:
Okay, after checking out this thread, I've decided on this approach as the only one that seems to return an accurate measure:
$dt = DateTime::createFromFormat('Y-m-d\TH:i:s.u\Z', $date);
$now = new DateTime();
echo ($now->getTimestamp() - $dt->getTimestamp())."\n";
ATTEMPTS:
In PHP 5.3 using classes (no 'U' format):
$dt = DateTime::createFromFormat('Y-m-d\TH:i:s.u\Z', $arr['launchTime']);
echo (new DateTime())->format('U');
In PHP 5.3 using procedural calls (also works like final solution):
$dt = date_create_from_format('Y-m-d\TH:i:s.u\Z', $arr['launchTime']);
$now = date_create();
echo ($now->getTimestamp() - $dt->getTimestamp());
In any version using strtotime (return wrong time):
date_default_timezone_set('UTC');
echo time() - strtotime($arr['launchTime']);
$ts = DateTime::CreateFromFormat('Y-m-d\TH:i:s?????', '2011-10-14T09:22:37.000Z');
echo $ts->diff(new DateTime())->format('U');
assuming you're on PHP 5.3+