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
我认为这两个时间戳之间存在明显差异.我需要准确比较日期和时间,看看它运行了多长时间.我找不到合适的方法来解决这个问题.任何想法赞赏!
您可以指定所需的时区now(),如下所示:
current_time = datetime.datetime.now(launch_time.tzinfo)
然后你的减法应该有效,因为这两个时间都是时区感知的.
编辑:我应该注意你可以放置你想要的任何时区对象now(),它会工作得很好.now()将时间转换为您传递的任何时区.重要的是要确保如果你添加/减去日期时间对象,它们都有时区(或者它们都缺少时区).