Amazon ec2 获取AWS实例的运行时间

Amazon ec2 获取AWS实例的运行时间,amazon-ec2,aws-php-sdk,Amazon Ec2,Aws Php Sdk,我正在使用PHP AWS SDK获取我帐户中所有正在运行的实例。我使用了以下API: $this->ec2Client = Ec2Client::factory(array( 'profile' => AWS_PROFILE, //contains my credentials 'region' => 'ap-northeast-1', 'version' => 'latest', )

我正在使用PHP AWS SDK获取我帐户中所有正在运行的实例。我使用了以下API:

$this->ec2Client = Ec2Client::factory(array(
            'profile' => AWS_PROFILE, //contains my credentials
            'region' => 'ap-northeast-1',
            'version' => 'latest',
        ));

$result = $this->ec2Client->DescribeInstances(array(
            'Filters' => array(
                array('Name' => 'instance-state-name', 'Values' => array('running')),
            )
        ));
我可以使用
LaunchTime
AvailabilityZone
信息获取所有正在运行的实例

它们的值分别为
2014-10-31T10:58:35+00:00
ap-northeast-1a


根据这些信息,我想以分钟为单位计算运行时间。正确的方法是什么?

为每个实例的
启动时间提供的值应该是的实例。您可以通过获取
LaunchTime
与另一个DateTime实例之间的差异来获取实例已运行的时间:

$interval = $launchTime->diff(new \DateTime('now'), true);

我在v3中使用以下方法解决了这个问题:

function interval_in_minutes($start_time){
        return round(abs($start_time->getTimestamp() -
            (new \DateTime)->getTimestamp()) / 60);
    }

$running_time = interval_in_minutes($instance["LaunchTime"]);

由于EC2客户端和其他实例可以在不同的AZS中运行,所以我们需要考虑时区吗?NO.<代码> DATETIME//COD>当计算一个差异时,对象会考虑时区,并且从EC2的API返回的值是一个整数(EngCH)时间戳。但是为
launchTime
返回的值是
string
,我需要几分钟内的结果。因此我尝试了以下方法:
$launch\u time=new DateTime($instance[“LaunchTime”])
$launch\u time->diff(new\DateTime('now'),true)
now
echo$launch\u time
分别生成小时、分钟和天。我应该手动转换成分钟吗?啊,我不知道你在用v2。LaunchTime在v3中是一个
DateTime
,在v2中是一个字符串,但该字符串可以传递给
DateTime
的构造函数
DateTime::diff
将返回一个
DateInterval
对象,该对象可以按照