在 Python 中将时间戳舍入到最近的一天

新手上路,请多包涵

在 Python 2.7.2 中,我使用以下方法获取自纪元以来的秒数:

sec_since_epoch = (date_obj - datetime(1970, 1, 1, 0, 0)).total_seconds()

现在我想将这些秒数舍入到最近的一天,例如:

datetime.fromtimestamp(sec_since_epoch)

对应 datetime(2013, 12, 14, 5, 0, 0)

我希望新的时间戳对应于 datetime(2013, 12, 14, 0, 0, 0)

我知道这样做的丑陋方式,但是有一种优雅的方式吗?

原文由 Lyman Zerga 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 343
2 个回答

当然,只需 datetime 转换为 --- date

 sec_since_epoch = (date_obj.date() - date(1970, 1, 1)).total_seconds()

当然 date() 截断。如果你想在中午或之后四舍五入等,只需在截断前添加 12 小时,或者检查日期是否 >= 同一天的中午,如果是,则添加一天(请注意,这些可以做不同的事情DST 边界天数),或任何你想四舍五入的规则。

原文由 abarnert 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 datetime.timetuple() 来处理日期。例如这样:

 from datetime import datetime

dt = datetime(2013, 12, 14, 5, 0, 0)
dt = datetime(*dt.timetuple()[:3]) # 2013-12-14 00:00:00
print dt.strftime('%s') # 1386997200

演示

原文由 Eugene Naydenov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题