标签: pytz

如何获得pytz时区的通用名称,例如.EST/EDT for America/New_York

给定特定用户的pytz时区(根据他的偏移量计算),我想显示该时区的通用名称.我假设人们更习惯于看到ESTPST,而不是像America/NewYork那样拼写出来.

pytz会在某处给我那些标准名称,还是我必须通过表格手动执行此操作?这可能会变得混乱,因为例如,一个季节的地方是EST,而在其他地方转移到显示EDT.

python django timezone pytz

35
推荐指数
4
解决办法
3万
查看次数

如何在python中将时区添加到天真的日期时间实例中

我有一个datetime没有时区信息.我现在正在获取时区信息,并希望将时区添加到现有的datetime实例中,我该怎么办?

d = datetime.datetime.now()
tz = pytz.timezone('Asia/Taipei')
Run Code Online (Sandbox Code Playgroud)

如何将时区信息添加tz到datetimea

python timezone datetime pytz

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

将python datetime转换为时间戳并以UTC格式返回仍然使用本地时区

我正在使用一个代码,它给我utc时间戳,我想将它们转换为适当的日期时间.不幸的是,当我用pytz测试简单的情况时,日期时间增加了6个小时(CST偏移到UTC).我需要保持时区数据的正确性,因为我正在计算其他时区之间的差异.任何想法为什么以及如何将utc时间戳转换为utc日期时间?

In [1]: import pytz

In [2]: from datetime import datetime

In [3]: import time

In [4]: datetime.fromtimestamp(time.mktime(datetime(7,1,1, tzinfo=pytz.UTC).timetuple()), tz=pytz.UTC)
Out[4]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)

In [5]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()), tz=pytz.UTC)
Out[5]: datetime.datetime(2007, 1, 1, 6, 0, tzinfo=<UTC>)

In [6]: datetime.fromtimestamp(time.mktime(datetime(7,1,1).utctimetuple()))
Out[6]: datetime.datetime(2007, 1, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)

python time datetime pytz

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

pytz utc转换

将天真时间tzinfo转换为UTC时间的正确方法是什么?说我有:

d = datetime(2009, 8, 31, 22, 30, 30)
tz = timezone('US/Pacific')
Run Code Online (Sandbox Code Playgroud)

第一种方式,pytz启发:

d_tz = tz.normalize(tz.localize(d))
utc = pytz.timezone('UTC')
d_utc = d_tz.astimezone(utc)
Run Code Online (Sandbox Code Playgroud)

第二种方式,来自UTCDateTimeField

def utc_from_localtime(dt, tz):
    dt = dt.replace(tzinfo=tz)
    _dt = tz.normalize(dt)
    if dt.tzinfo != _dt.tzinfo:
        # Houston, we have a problem...
        # find out which one has a dst offset
        if _dt.tzinfo.dst(_dt):
            _dt -= _dt.tzinfo.dst(_dt)
        else:
            _dt += dt.tzinfo.dst(dt)
    return _dt.astimezone(pytz.utc)
Run Code Online (Sandbox Code Playgroud)

不用说,这两种方法在很多时区产生不同的结果.

问题是 - 什么是正确的方法?

python datetime utc pytz

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

pytz - 将UTC和时区转换为当地时间

我有一个datetimeutc时区,例如:

utc_time = datetime.datetime.utcnow()
Run Code Online (Sandbox Code Playgroud)

还有一个pytz时区对象:

tz = timezone('America/St_Johns')
Run Code Online (Sandbox Code Playgroud)

转换utc_time到给定时区的正确方法是什么?

python timezone utc pytz

30
推荐指数
5
解决办法
4万
查看次数

Python datetime对象显示错误的时区偏移量

我尝试使用datetime和pytz在python中创建一个datetime对象,显示的偏移是错误的.

import datetime
from pytz import timezone

start = datetime.datetime(2011, 6, 20, 0, 0, 0, 0, timezone('Asia/Kolkata'))
print start
Run Code Online (Sandbox Code Playgroud)

显示的输出是

datetime.datetime(2011, 6, 20, 0, 0, tzinfo=<DstTzInfo 'Asia/Kolkata' HMT+5:53:00 STD>)
Run Code Online (Sandbox Code Playgroud)

请注意,'Asia/Kolkata'是IST,GMT + 5:30,而不是HMT + 5:53.这是一个标准的linux时区,为什么我会弄错,我该如何解决呢?

python datetime pytz

28
推荐指数
2
解决办法
9478
查看次数

如何获取与当前时区对应的tz_info对象?

python(或pytz)中是否存在跨平台功能,它返回tzinfo与当前在计算机上设置的时区对应的对象?

环境变量不能指望,因为它们不是跨平台的

python time timezone datetime pytz

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

pytz:为什么在时区之间转换时需要规范化?

我正在阅读不那么完整的pytz文档,而且我一直在理解它的一部分.

时区之间的转换也需要特别注意.这也需要使用normalize方法来确保转换是正确的.

>>> utc_dt = utc.localize(datetime.utcfromtimestamp(1143408899))
>>> utc_dt.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
>>> au_tz = timezone('Australia/Sydney')
>>> au_dt = au_tz.normalize(utc_dt.astimezone(au_tz))
>>> au_dt.strftime(fmt)
'2006-03-27 08:34:59 EST+1100'
>>> utc_dt2 = utc.normalize(au_dt.astimezone(utc))
>>> utc_dt2.strftime(fmt)
'2006-03-26 21:34:59 UTC+0000'
Run Code Online (Sandbox Code Playgroud)

没有使用过这个例子normalize,结果就是这样.在我看来,这个例子并没有真正解释为什么我们必须在不同时区的对象normalize之间进行转换datetime时使用.

有人请给我一个例子(如上所述),结果在不使用时有所不同normalize.

谢谢

python timezone pytz

23
推荐指数
2
解决办法
8733
查看次数

使用pytz进行日期时间和时区转换 - 令人兴奋的行为

我正在尝试将时区感知datetime对象转换为UTC,然后再回到它的原始时区.我有一个以下代码段

t = datetime(
    2013, 11, 22, hour=11, minute=0,
    tzinfo=pytz.timezone('Europe/Warsaw')
)
Run Code Online (Sandbox Code Playgroud)

现在在ipython中:

In [18]: t
Out[18]: datetime.datetime(
    2013, 11, 22, 11, 0, tzinfo=<DstTzInfo 'Europe/Warsaw' WMT+1:24:00 STD>
)
Run Code Online (Sandbox Code Playgroud)

现在让我们尝试转换为UTC并返回.我希望有相同的表示:

In [19]: t.astimezone(pytz.utc).astimezone(pytz.timezone('Europe/Warsaw'))
Out[19]: datetime.datetime(
    2013, 11, 22, 10, 36, tzinfo=<DstTzInfo 'Europe/Warsaw' CET+1:00:00 STD>
)
Run Code Online (Sandbox Code Playgroud)

然而,我们看到Out[18]并且Out[19]有所不同.这是怎么回事?

python django timezone datetime pytz

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

Python - 在特定时区设置日期时间(无UTC转换)

为了清楚,这是python 2.6,我正在使用pytz.

这是针对仅处理美国时区的应用程序,我需要能够锚定日期(今天),并且仅在太平洋标准时间晚上8点和晚上11点获得unix时间戳(纪元时间).

这真让我抓狂.

> pacific = pytz.timezone("US/Pacific")

> datetime(2011,2,11,20,0,0,0,pacific)

datetime.datetime(2011, 2, 11, 20, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:0 STD>)

> datetime(2011,2,11,20,0,0,0,pacific).strftime("%s")
'1297454400'

zsh> date -d '@1297454400'    
Fri Feb 11 12:00:00 PST 2011
Run Code Online (Sandbox Code Playgroud)

因此,即使我正在设置时区,并使用该时区创建日期时间,它仍然将其创建为UTC然后转换它.这是一个更大的问题,因为当我尝试进行计算时,UTC将会提前一天.

是否有一种简单(或至少是敏感)的方式来生成今天太平洋标准时间晚上8点的时间戳?

(很明显,我确实理解在大多数情况下使用UTC的价值,比如数据库时间戳,或者用于一般存储.这不是其中一种情况,我特别需要PST的晚上时间戳,UTC不应该进入它.)

python datetime pst pytz

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

标签 统计

python ×10

pytz ×10

datetime ×7

timezone ×6

django ×2

time ×2

utc ×2

pst ×1