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

Python 如何将Unix/POSIX时间戳舍入到最接近的30分钟?,python,datetime,timestamp,epoch,Python,Datetime,Timestamp,Epoch,我想取一个从SQL查询返回的历元,并向上(或向下)取整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 =

我想取一个从SQL查询返回的历元,并向上(或向下)取整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)
s=row.get(“值”)[0][1]
s=
t=日期时间.fromtimestamp(浮点/1000)
dateFmt=“%Y-%m-%d”
timeFmt=“%H:%M”
日期=t.strftime(dateFmt)
时间=t.strftime(timeFmt)

首先将数据转换为预期的表示形式。这可能涉及时区变化。假设
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
时区)

除以30分钟,取整,然后再乘以30分钟。如果您的输入以秒为单位,则
s=round(s/60/30)*60*30
。但是考虑到你的
/1000.
,也许你有毫秒?如果是这样的话,
s=round(s/60/30/1000)*60*30*1000
。这样就行了!!非常感谢。