我从EC2实例中提取启动时间,它返回如下unicode字符串:
2014-12-22T08:46:10.000Z
我使用dateutil解析器将其转换为datetime
launch_time = parser.parse(instance.launch_time)
所以像这样转换后我有午餐时间:
2014-12-22 08:46:10+00:00
我想比较这个启动时间和当前时间,看看这个实例运行了多长时间。
我的当前时间是:
current_time = datetime.datetime.now()
我是这样理解的:
2014-12-22 11:46:10.527010
现在我有两个时间戳,我有这个函数
def timeDiff(launch_time, current_time):
running_time = current_time - launch_time
return running_time.seconds/60
我预计结果是180分钟(3小时)。但我犯了个错误:
TypeError: can't subtract offset-naive and offset-aware datetimes
我认为这两个时间戳有明显的区别。我需要比较确切的日期和时间,看看它已经运行了多久。我找不到合适的方法来解决这个问题。任何想法都值得欣赏!
您可以从
now()
指定所需的时区,如下所示:current_time = datetime.datetime.now(launch_time.tzinfo)
那么你的减法就应该起作用了,因为这两个时间都是时区感知的。
编辑:我需要注意的是,您可以将任何时区对象放在
now()
中,它将正常工作。now()
将时间转换为您经过的任何时区。重要的一点是简单地确保如果您在添加/减去datetime对象,它们都有时区(或者都没有时区)。相关问题 更多 >
编程相关推荐