如何在python

时间:2015-07-10 15:21:46

标签: python postgresql

我在python中有一个数据库(postgreSQL)的输出。时间编码为timestamptz。我们需要能够将时间转换为几分钟。

  

2015-07-09 13:45:08.266520 + 00:00

例如,这将是825分钟。

我遇到了datetime.datetime格式化的问题,我只需要能够删除除了小时和分钟之外的所有内容,然后转换为分钟。

time_format = '%H:%M'

time1 = datetime.strptime('2015-07-09 13:45:08.266520+00:00', time_format)

所以我试图将一大堆时间排序到一定的时间间隔内。我需要这些时间才能在几分钟内对它们进行任何数学计算,我不想再浪费时间了。这就是为什么我试图通过花费* 60 +分钟来将它们转换成分钟。由于这是一种时间形式,我无法做到这一点。

3 个答案:

答案 0 :(得分:2)

使用参考时间点从DateTime中提取DateTime,从结果total_seconds中提取TimeDelta并除以60。

(你没有提供任何代码。所以我不能根据你的代码提供任何代码。)

答案 1 :(得分:1)

dateutil解析了ISO 8601邮票时遇到了很多麻烦:

>>> import dateutil.parser
>>> dateutil.parser.parse('2015-07-09 13:45:08.266520+00:00')
datetime.datetime(2015, 7, 9, 13, 45, 8, 266520, tzinfo=tzutc())

由于您希望答案为“825分钟”,因此您必须寻找一个时代标记的偏移量:

>>> import datetime as dt
>>> mark=dateutil.parser.parse('2015-07-09 13:45:08.266520+00:00')-dt.timedelta(minutes=825)
>>> mark
datetime.datetime(2015, 7, 9, 0, 0, 8, 266520, tzinfo=tzutc())

所以现在使用mark作为计算分钟偏移的基础。 (你可能意味着忽略基准时间标记中的微秒)

答案 2 :(得分:0)

我明白你要做的事情。因此,您希望将从数据库中获取的时间戳转换为分钟。基本上0:00会是0,1:00会是60,依此类推。

时间戳是标准的,所以你可以做的肮脏的黑客只是拉出你想要的相关信息的索引并从那里开始。

time = "2015-07-09 13:45:08.266520+00:00"
data = time[11:18]
print data //Will be 13:45:08

然后你可以从那里进行数据操作。