我正在从API中提取UTC时间的事务日期。
我的目标是将这个UTC日期时间转换为UTC纪元时间。
目前,看起来像是.timestamp()将datetime的时区更改为我的本地时区。
任何洞察力都是值得感谢的!
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: 16366903391636690339转换为:
格林尼治时间: 2021-11-12 4:12:19
您的时区: 2021-11-11 23:12:19 GMT-05:00
发布于 2021-11-20 23:13:02
如果您没有为Python datetime对象设置时区,它将假定它表示本地时间。这就是为什么您的Unix时间与本地时间的UTC偏移量不一致的原因。因此,通过从datetime模块导入时区的
transaction_time_parsed = transaction_time_parsed.replace(tzinfo=timezone.utc)来设置UTC。
另请参阅naive vs. aware datetime上的文档。
https://stackoverflow.com/questions/70050416
复制相似问题