【问题标题】:Convert UTC datetime to UTC epoch将 UTC 日期时间转换为 UTC 纪元
【发布时间】:2021-12-31 03:32:09
【问题描述】:

我正在从 API 中提取 UTC 时间的交易日期。

我的目标是将此 UTC 日期时间转换为 UTC 纪元时间。

目前,.timestamp() 似乎将日期时间的时区更改为我的本地时区。

感谢任何见解!

INPUT:
# Get timestamp of transaction from events - (Note: events = data from API request)
transaction_time = event['transaction']['timestamp'] 
# Print transaction time value - (Data Type: str)
print("Transaction time:", transaction_time)

# Parse transaction_time
transaction_time_parsed = parser.parse(str(transaction_time))
# Print transaction_time_parsed value - (Data Type: datetime.datetime)
print("Parsed transaction time:", transaction_time_parsed)

# Convert transaction_time_parsed to epoch time and remove decimal
transaction_epoch_time = format((parser.parse(str(transaction_time)).timestamp()), '.0f')
# Print transaction_epoch_time value - (Data Type: str)
print("After .timestamp() & epoch conversion:", transaction_epoch_time)

OUTPUT:
Transaction time: 2021-11-11T23:12:19
Parsed transaction time: 2021-11-11 23:12:19
After .timestamp() & epoch conversion: 1636690339

1636690339 转换为:

格林威治标准时间:2021-11-12 4:12:19

您的时区:2021-11-11 23:12:19 GMT-05:00

【问题讨论】:

  • 如果您没有为 Python 日期时间对象设置时区,它将假定它代表 本地时间。这就是为什么您的 Unix 时间与本地时间的 UTC 偏移量相差很大的原因。所以设置UTC,例如由 transaction_time_parsed = transaction_time_parsed.replace(tzinfo=timezone.utc) 从 datetime 模块导入时区。
  • 另见naive vs. aware datetime上的文档
  • @MrFuppes 你是男人,非常感谢你!

标签: python python-3.x datetime python-datetime python-dateutil


【解决方案1】:

现在基于 MrFuppes [1, 2] 的 cmets 解决了这个问题:

如果您没有为 Python 日期时间对象设置时区,它将 假设它代表当地时间。这就是为什么你的 Unix 时间是 按您当地时间的 UTC 偏移量关闭。所以设置UTC,例如经过 transaction_time_parsed = transaction_time_parsed.replace(tzinfo=timezone.utc) 带时区 从日期时间模块导入。

另请参阅naive vs. aware datetime 上的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-14
    • 2011-06-05
    • 2020-05-19
    • 2019-09-26
    • 2020-12-04
    • 1970-01-01
    • 2011-01-06
    • 2021-10-06
    相关资源
    最近更新 更多