【问题标题】:Get the timestamp of the start of a day (local time) [duplicate]获取一天开始的时间戳(当地时间)[重复]
【发布时间】:2016-01-19 14:24:14
【问题描述】:

我想知道是否有任何方法可以获取某一天开始时的 UNIX 时间戳,即给定时区的每一天的午夜时间戳。

【问题讨论】:

  • 自纪元以来的秒数或微秒数?
  • 如果你有一个datetime 对象,你可以直接调用datetime.timestamp()。
  • @Robᵩ 一个整数,表示 UTC 偏移量。
  • 请记住,并非所有当地日子都从午夜开始。例如,2015-10-18 in the south half of Brazil starts at 1:00 AM。 00:00 到 00:59(及其所有亚秒)不存在。
  • @J.F.Sebastian:别荒谬了。 OP 特别指出 在 cmets 中他们有一个 UTC 偏移量。为什么他们把它放在哪个盒子里很重要?

标签: python datetime timezone


【解决方案1】:

假设您不关心夏令时并且您知道当时有效的 UTC 偏移量(与有效的 UTC 偏移量相反现在),你可以这样做:

import datetime as dt
return dt.datetime(year, month, day, tzinfo=dt.timezone(utc_offset)).timestamp()

小时、分钟和秒默认为零,因此您可以跳过它们。 timezone 类不处理夏令时、时区定义的历史变化(例如British Double Summer Time)或任何其他时间异常(例如there was no December 30, 2011 in Samoa);这是一个“愚蠢”的偏移量。它相当于(在这种情况下)直接在时间戳上添加或减去偏移量,然后在 UTC 中工作。您必须确保这对于您的用例是正确的。如果你需要更好的计时,你应该安装并使用pytz。

【讨论】:

  • 欢迎反对者评论这个答案有什么问题。由于 OP 专门询问 UTC 偏移量,因此我很难就目前的问题给出更“正确”的答案。
猜你喜欢
  • 1970-01-01
  • 2014-10-18
  • 2022-01-18
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 2021-06-13
  • 1970-01-01
相关资源
最近更新 更多