如何将Unix/POSIX时间戳舍入到最接近的30分钟?

2024-04-27 04:39:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想取一个从SQL查询返回的epoch并向上(或向下)取整30分钟。我想在第二行代码中这样做。你知道怎么做吗?在

s = row.get("values")[0][1]
s = <<<round to closest 30 mins>>>
t = datetime.fromtimestamp(float(s)/1000.)
dateFmt = "%Y-%m-%d"
timeFmt = "%H:%M"
date = t.strftime(dateFmt)
time = t.strftime(timeFmt)

Tags: to代码sqlgetdatetimerowvaluesround
1条回答
网友
1楼 · 发布于 2024-04-27 04:39:52

首先将数据转换为预期的表示形式。这可能涉及时区变化。假设t是所需的表示形式,则可以替换所需的元素:

# python 3
t.replace(minute=t.minute // 30 * 30, second=0, microsecond=0)
# python 2
t.replace(minute=t.minute / 30 * 30, second=0, microsecond=0)

我不会使用评论中关于操作时间戳本身的解决方案,除非您确定它总是在本地时区。您可能会遇到奇数分钟轮班的问题(有+xx30+xx45时区)

相关问题 更多 >