PHP Parsing Amazon EC2 instance 'launchTime

2019-05-25 21:07发布

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?

2条回答
Animai°情兽
2楼-- · 2019-05-25 21:25

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']);
查看更多
贼婆χ
3楼-- · 2019-05-25 21:34
$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+

查看更多
登录 后发表回答