比较EC2实例的启动时间和python中的当前时间

Rag*_*son 4 python datetime amazon-ec2 boto amazon-web-services

我从EC2实例中提取launch_time,它返回一个unicode字符串,如下所示:

2014-12-22T08:46:10.000Z

我使用dateutil解析器将其转换为datetime

launch_time = parser.parse(instance.launch_time)
Run Code Online (Sandbox Code Playgroud)

所以我转换后的午餐时间如下:

2014-12-22 08:46:10 + 00:00

我想将此启动时间与当前时间进行比较,以了解此实例运行了多长时间.

我得到current_time:

current_time = datetime.datetime.now()
Run Code Online (Sandbox Code Playgroud)

我这样得到它:

2014-12-22 11:46:10.527010

现在我有两个时间戳,我有这个功能

def timeDiff(launch_time, current_time):
    running_time = current_time - launch_time
    return running_time.seconds/60
Run Code Online (Sandbox Code Playgroud)

我预计结果将是180分钟(3小时).但我得到了这个错误:

TypeError:无法减去offset-naive和offset-aware datetimes

我认为这两个时间戳之间存在明显差异.我需要准确比较日期和时间,看看它运行了多长时间.我找不到合适的方法来解决这个问题.任何想法赞赏!

ali*_*nth 7

您可以指定所需的时区now(),如下所示:

current_time = datetime.datetime.now(launch_time.tzinfo)

然后你的减法应该有效,因为这两个时间都是时区感知的.

编辑:我应该注意你可以放置你想要的任何时区对象now(),它会工作得很好.now()将时间转换为您传递的任何时区.重要的是要确保如果你添加/减去日期时间对象,它们都有时区(或者它们都缺少时区).