我正在尝试编写一个函数,它将Python中的字符串日期/时间从本地时间转换为UTC。
根据this question,您可以使用time.tzname
来获取某些形式的本地时区,但我还没有找到在任何日期时间转换方法中使用此方法的方法。例如,this article显示您可以使用pytz
和datetime
来转换时间,但所有这些都有时区,这些时区是硬编码的,格式不同于time.tzname
返回的内容。
目前我有以下代码将字符串格式的时间转换为毫秒(Unix纪元):
local_time = time.strptime(datetime_str, "%m/%d/%Y %H:%M:%S") # expects UTC, but I want this to be local
dt = datetime.datetime(*local_time[:6])
ms = int((dt - datetime.datetime.utcfromtimestamp(0)).total_seconds() * 1000)
但是,这需要时间作为UTC输入。有没有办法将字符串格式化的时间转换为在本地时区?感谢。
基本上,我希望能够执行this answer所做的事情,但我希望能够动态指定本地时区,而不是“America / Los_Angeles”中的硬编码。
答案 0 :(得分:1)
如果我理解你的问题你想要这个:
from time import strftime,gmtime,mktime,strptime
# you can pass any time you want
strftime("%Y-%m-%d %H:%M:%S", gmtime(mktime(strptime("Thu, 30 Jun 2016 03:12:40", "%a, %d %b %Y %H:%M:%S"))))
# and here for real time
strftime("%Y-%m-%d %H:%M:%S", gmtime(mktime(strptime(strftime("%a, %d %b %Y %H:%M:%S"), "%a, %d %b %Y %H:%M:%S"))))