相关疑难解决方法(0)

如何在python中识别未知的日期时区时区

我需要做什么

我有一个时区不知道的日期时间对象,我需要添加一个时区,以便能够将其与其他时区感知日期时间对象进行比较.我不想将我的整个应用程序转换为时区,而不是因为这个遗留案例.

我试过的

首先,要证明问题:

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)

python timezone datetime

446
推荐指数
10
解决办法
27万
查看次数

pytz和astimezone()不能应用于天真的日期时间

我有一个约会,我需要让时区知道.

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时区感知广告.

谢谢

python timezone datetime pytz

50
推荐指数
2
解决办法
5万
查看次数

使用Python查找当前是否在夏令时中的时区

我们有一台在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)

python time timezone pytz dst

19
推荐指数
2
解决办法
2万
查看次数

如何向日期时间对象添加时区?

我有一个变量从文件中获取日期对象。我的目标是向该对象添加一个时区,以便它根据当时的日期自动更改时间。所以我预计它会添加+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 小时......有人可以解释一下并告诉我出了什么问题吗?

我只是希望我的日期时间对象能够感知时区,以便它根据抓取的日期自动从夏季更改为冬季。

python timezone datetime python-datetime

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

python ×4

timezone ×4

datetime ×3

pytz ×2

dst ×1

python-datetime ×1

time ×1