Python UTC时间减去5分钟

3 投票
4 回答
11203 浏览
提问于 2025-04-18 02:26

如何在Python中将时间向下舍入到5分钟?

我有一个脚本,但我觉得可以更简单一些,而且在整点的时候计算会出错。当时间是22:03时,它返回的是21:95,而不是21:55。

import datetime
from datetime import date
import time

utc_datetime = datetime.datetime.utcnow()
jaar = date.today().year
maand = time.strftime("%m")
dag = time.strftime("%d")
uurutc = utc_datetime.strftime("%H")
autc = utc_datetime.strftime("%M")
minuututc = int(5 * round(float(autc)/5)-5)
uur = time.strftime("%H")
a = time.strftime("%M")
minuut = int(5 * round(float(a)/5)-5)

timestamp = ''.join(str(x) for x in [jaar, maand, dag, uurutc, minuututc])

print timestamp

这个代码实际上应该做的事情:

我们的当地时间是UTC+2,但我只需要UTC时间,所以输出必须是UTC格式。

其次,时间需要在当前时间的基础上减去5分钟,然后向下舍入。

输出字符串的格式应该是:YYYYMMDDHHMM。

举个例子:

当地时间:12:53 > 脚本输出:10:45

当地时间:17:07 > 脚本输出:15:00

当地时间:08:24 > 脚本输出:06:15

谁能帮我解决这个问题?

谢谢!

4 个回答

-2

根据上面的评论,使用timedelta类:

import datetime

now = datetime.datetime.now()
five_mins = datetime.timedelta(minutes=5)

five_mins_ago = now - five_mins

print five_mins_ago

补充:另一个答案更好,因为它涵盖了四舍五入的部分。

1

你可以使用 d = d.replace(minute=n*(d.minute // n)) 这个方法来把时间向下舍入到 n 分钟:

>>> d = datetime(2014, 4, 12, 0, 7); print(d.replace(minute=5*(d.minute // 5)))
2014-04-12 00:05:00
>>> n = 15
>>> d = datetime(2014, 4, 12, 10, 53); print(d.replace(minute=n*(d.minute//n)))
2014-04-12 10:45:00
>>> d = datetime(2014, 4, 12, 15, 7); print(d.replace(minute=n*(d.minute//n)))
2014-04-12 15:00:00
>>> d = datetime(2014, 4, 12, 6, 24); print(d.replace(minute=n*(d.minute//n)))
2014-04-12 06:15:00
3
import datetime
time = (datetime.datetime.utcnow() - datetime.timedelta(minutes=5)).strftime('%Y-%m-%dT%H:%M:%SZ')
print(time)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

8

使用 datetime.timedelta

from datetime import datetime, timedelta
now = datetime.utcnow()
rounded = now - timedelta(minutes=now.minute % 5 + 5,
                          seconds=now.second,
                          microseconds=now.microsecond)
print rounded
# -> 2014-04-12 00:05:00

撰写回答