我需要做什么
我有一个时区不知道的日期时间对象,我需要添加一个时区,以便能够将其与其他时区感知日期时间对象进行比较.我不想将我的整个应用程序转换为时区,而不是因为这个遗留案例.
我试过的
首先,要证明问题:
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> import pytz
>>> unaware = datetime.datetime(2011,8,15,8,15,12,0)
>>> unaware
datetime.datetime(2011, 8, 15, 8, 15, 12)
>>> aware = datetime.datetime(2011,8,15,8,15,12,0,pytz.UTC)
>>> aware
datetime.datetime(2011, 8, 15, 8, 15, 12, tzinfo=<UTC>)
>>> aware == unaware
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't compare offset-naive and offset-aware …Run Code Online (Sandbox Code Playgroud) 我有一个约会,我需要让时区知道.
local_tz = timezone('Asia/Tokyo')
start_date = '2012-09-27'
start_date = datetime.strptime(start_date, "%Y-%m-%d")
start_date = start_date.astimezone(local_tz)
now_utc = datetime.now(timezone('UTC'))
local_now = now_utc.astimezone(local_tz)
Run Code Online (Sandbox Code Playgroud)
我需要找到这是否属实:
print start_date>local_now
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误.
start_date = start_date.astimezone(local_tz)
ValueError: astimezone() cannot be applied to a naive datetime
Run Code Online (Sandbox Code Playgroud)
我将utc转换为tokyo没有任何问题.我需要在东京做好start_date时区感知广告.
谢谢
我们有一台在GMT时间运行的服务器.我需要编写一个Python脚本来确定它是否是加利福尼亚州洛杉矶的当前(在这第二个)夏令时(DST).我怎么能做到这一点?我看了一下pytz和时间,但我无法弄明白.我意识到我可以创建一些逻辑,例如比较LA中的当前时间和GMT时间,但如果我可以使用标准库,那将会更加清晰.
谢谢
编辑:这是我设置时区的一些示例代码:
from pytz import timezone
import pytz
from datetime import datetime, timedelta
tz = timezone('America/Los_Angeles')
// Instantiate a datetime object using tz?
Run Code Online (Sandbox Code Playgroud)
编辑:这是一段可行的代码片段.它不优雅,这就是为什么我要问是否有一个图书馆或为此而制作的东西.也许像is_dst()函数.
utc = timezone("UTC")
now = utc.localize(datetime.utcnow())
los_angeles_tz = timezone('America/Los_Angeles')
los_angeles_time = now.astimezone(los_angeles_tz)
delta = los_angeles_time.utcoffset()
dstDelta = timedelta(hours=-8)
is_dst = (delta == dstDelta)
Run Code Online (Sandbox Code Playgroud) 我有一个变量从文件中获取日期对象。我的目标是向该对象添加一个时区,以便它根据当时的日期自动更改时间。所以我预计它会添加+1hour夏季(三月到十月之间)的日期和+0hour冬季(十月到三月之间)的日期。
dt_object = '20200901-01u30m30s'
dt_object = datetime.datetime.strptime(dt_object, '%Y%m%d-%Hu%Mm%Ss')
>>>print(dt_object) >>> 2020-09-01 01:30:30
timezone= 'Europe/Amsterdam'
dt_object_tz = pytz.utc.localize(dt_object).astimezone(pytz.timezone(timezone))
timeDiff = dt_object_tz.utcoffset().total_seconds()
official_time = pytz.utc.localize(dt_object_tz+datetime.timedelta(seconds=timeDiff))
>>>print(official_time) >>> 2020-09-01 03:30:30+00:00
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这是 9 月的日期时间对象(所以是夏季!),我真的不知道为什么它会增加 +2 小时而不是 1 小时......有人可以解释一下并告诉我出了什么问题吗?
我只是希望我的日期时间对象能够感知时区,以便它根据抓取的日期自动从夏季更改为冬季。