将特定时区的日期转换为 Python 中的时间戳

Convert date in a specific timezone to a timestamp in Python

如果我有类似“2021 年 4 月 2 日”的日期并且(假设它在太平洋标准时间中午列出),我如何将其转换为等效的 Unix 纪元日期,我认为这是 UTC 时间的第二个数字?

这是我的尝试:

import time
import datetime
import pytz

print("Right now it's {}".format(int(time.time())))

date_string = "Apr 02, 2021"

d = datetime.datetime.strptime(date_string, '%b %d, %Y').replace(hour=12)
pacific_timezone = pytz.timezone("America/Los_Angeles")
d_in_pacific_time = pacific_timezone.localize(d)

print("Noon PST on that day was {}".format(int(d_in_pacific_time.timestamp())))

我不知道我这样做是否正确,或者该方法是否有意义,时间总是让我感到困惑,我在这里瞎了眼。制作日期时间是否正确,将其本地化为 pytz 时区,然后使用 .timestamp() 进行转换,希望将其转换为 UTC?

import datetime as dt
import pytz

pacific_timezone = pytz.timezone("America/Los_Angeles")
date = dt.datetime(2021, 4, 2, tzinfo=pacific_timezone)  # Apr 2, 2021
posix_time = date.timestamp()  # seconds since Jan 1, 1970

您可以通过测试 date = dt.datetime(1970,1,1,tzinfo=dt.timezone.utc) 来验证这是否有效。

指定 tzinfo 使 date 成为“感知”日期时间对象,这就是为什么您可以将它与其他日期时间对象进行比较,就像在 timestamp() 方法中所做的那样。来自文档:

timestamp = (dt - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()