将特定时区中的日期转换为 Python 中的时间戳
Posted
技术标签:
【中文标题】将特定时区中的日期转换为 Python 中的时间戳【英文标题】:Convert date in a specific timezone to a timestamp in Python 【发布时间】:2021-06-29 14:19:14 【问题描述】:如果我有“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 是否正确?
【问题讨论】:
是的,你是对的,如果你把它转换回来,它会给你正确的输出。print(datetime.datetime.fromtimestamp(1617390000).astimezone(tz = pytz.timezone('US/Pacific')))
【参考方案1】:
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()
【讨论】:
以上是关于将特定时区中的日期转换为 Python 中的时间戳的主要内容,如果未能解决你的问题,请参考以下文章
将时间戳转换为特定时区然后在 bigquery 中将其转换为日期时出现问题
Python:如何将日期时间/时间戳从一个时区转换为另一个时区?
将 UTC 中的 SQL Server 日期时间转换为特定时区