相关疑难解决方法(0)

是否有Pytz时区列表?

我想知道Python库Pytz中timezone参数的所有可能值.

for tz in pytz.all_timezones:
    print tz


Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Brazzaville
Africa/Bujumbura
Africa/Cairo
Africa/Casablanca
Africa/Ceuta
Africa/Conakry
Africa/Dakar
Africa/Dar_es_Salaam
Africa/Djibouti
Africa/Douala
Africa/El_Aaiun
Africa/Freetown
Africa/Gaborone
Africa/Harare
Africa/Johannesburg
Africa/Juba
Africa/Kampala
Africa/Khartoum
Africa/Kigali
Africa/Kinshasa
Africa/Lagos
Africa/Libreville
Africa/Lome
Africa/Luanda
Africa/Lubumbashi
Africa/Lusaka
Africa/Malabo
Africa/Maputo
Africa/Maseru
Africa/Mbabane
Africa/Mogadishu
Africa/Monrovia
Africa/Nairobi
Africa/Ndjamena
Africa/Niamey
Africa/Nouakchott
Africa/Ouagadougou
Africa/Porto-Novo
Africa/Sao_Tome
Africa/Timbuktu
Africa/Tripoli
Africa/Tunis
Africa/Windhoek
America/Adak
America/Anchorage
America/Anguilla
America/Antigua
America/Araguaina
America/Argentina/Buenos_Aires
America/Argentina/Catamarca
America/Argentina/ComodRivadavia
America/Argentina/Cordoba
America/Argentina/Jujuy
America/Argentina/La_Rioja
America/Argentina/Mendoza
America/Argentina/Rio_Gallegos
America/Argentina/Salta
America/Argentina/San_Juan
America/Argentina/San_Luis
America/Argentina/Tucuman
America/Argentina/Ushuaia …
Run Code Online (Sandbox Code Playgroud)

python django pytz

574
推荐指数
8
解决办法
29万
查看次数

在python中转换时区的意外结果

我试图理解为什么在将时区转换为UTC时我得到这些结果:

In [74]: d1 = datetime(2007, 12, 5, 6, 30,tzinfo=pytz.timezone('US/Pacific'))
In [75]: d1
Out[75]: datetime.datetime(2007, 12, 5, 6, 30, tzinfo=<DstTzInfo 'US/Pacific' LMT-1 day, **16:07:00 STD**>)
In [76]: d1.astimezone(pytz.utc)
Out[76]: datetime.datetime(2007, 12, 5, 14, 23, tzinfo=<UTC>)
Run Code Online (Sandbox Code Playgroud)

为什么早上6:30成为下午2:23?

另一方面,如果我使用以下方法,我得到预期的结果:

In [90]: d2 = datetime(2007, 12, 5, 6, 30)
In [91]: uspac = pytz.timezone('US/Pacific')
In [92]: d2_aware = uspac.localize(d2)
In [94]: d2_aware.astimezone(pytz.utc)
Out[94]: datetime.datetime(2007, 12, 5, 14, 30, tzinfo=<UTC>)
Run Code Online (Sandbox Code Playgroud)

python pytz

36
推荐指数
3
解决办法
8704
查看次数

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
查看次数

Python pytz时区函数返回一个9分钟的时区

由于某些我无法弄清楚的原因,从以下代码:

>>> from pytz import timezone
>>> timezone('America/Chicago')
Run Code Online (Sandbox Code Playgroud)

我明白了:

<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD>
Run Code Online (Sandbox Code Playgroud)

我想,我应该得到:

<DstTzInfo 'America/Chicago' LMT-1 day, 18:00:00 STD>
Run Code Online (Sandbox Code Playgroud)

...因为我认为我的时区距离UTC只有6小时9分钟.

我已经查看了源代码,pytz但我承认我还没有完全弄清楚出了什么问题.

我已将其他值传递给timezone()函数,它返回的值似乎是正确的.但由于某些原因,与我的时区相关的信息不正确.

最后,我旁边的立方体中的同事确认该函数在他的机器上返回正确的时区信息.

有谁知道为什么我的时区('America/Chicago')会在9分钟后关闭?我运行版本2015.7pytz安装使用pip.谢谢!

python timezone pytz timezone-offset

19
推荐指数
3
解决办法
5377
查看次数

pytz.timezone显示亚洲/加尔各答奇怪的结果?

可能重复:
Python datetime对象显示错误的时区偏移量

import pytz, datetime

 pytz.timezone("Asia/Calcutta")
Run Code Online (Sandbox Code Playgroud)

打印以下内容:

< DstTzInfo 'Asia/Calcutta' HMT+5:53:00 STD >
Run Code Online (Sandbox Code Playgroud)

为什么不是05:30呢?我在时区America/Los_Angeles.

python datetime pytz

11
推荐指数
1
解决办法
4804
查看次数

Python中的夏令时

我正在编写一个程序,它可以处理很多时区并将它们交叉.我最常处理的两件事是从"now"创建一个datetime对象,然后本地化一个天真的datetime对象.

要在太平洋时区创建一个日期时间对象,我目前正在这样做(python 2.7.2+)

from datetime import datetime
import pytz
la = pytz.timezone("America/Los_Angeles")
now = datetime.now(la)
Run Code Online (Sandbox Code Playgroud)

对于夏令时,这是正确的吗?如果没有,我想我应该这样做:

now2 = la.localize(datetime.now())
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么?任何人都可以告诉我第一个错误的情况,秒是对的?

至于我的秒问题,假设我在加利福尼亚州洛杉矶上午8:00的某个用户输入中有一个天真的日期和时间.是这样制作日期时间的正确方法:

la.localize(datetime(2012, 9, 1, 8, 0))
Run Code Online (Sandbox Code Playgroud)

如果没有,我应该如何构建这些日期时间?

python datetime pytz dst

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

保存本地日期时间将时间偏移 4 分钟

我正在尝试通过以下方式在保存和加载时根据时区修改日期时间:

输入日期时间以及输入时区被发送到服务器,服务器应更新日期时间以反映时区。所以当它保​​存在数据库(PostregSQL)中时,保存的是UTC时间(当然是在时区引起的偏移之后)。

为了反映这一点,这里有一个以相同方式失败的简单示例:

一些进口:

>>> import datetime
>>> import pytz
>>> from apps.myapp.models import Project
Run Code Online (Sandbox Code Playgroud)

创建两个输入:

>>> input_date = timezone.now()
>>> input_date
datetime.datetime(2017, 2, 7, 16, 7, 14, 377429, tzinfo=<UTC>)
>>> current_tz = pytz.timezone('America/New_York')
>>> current_tz
<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>
Run Code Online (Sandbox Code Playgroud)

如您所见,时区不是5h( 24 - 19 = 5),而是4h56. 在这个阶段我认为没关系,它可能与夏令时有关。

现在我正在替换输入日期的时区:

>>> input_date = input_date.replace(tzinfo=current_tz)
>>> input_date
datetime.datetime(2017, 2, 7, 16, 7, 14, 377429, tzinfo=<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>)
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,时间没有改变,但时区改变了,这很好。

我将这个值分配给一个项目(launch_date是一种DateTimeField没有任何具体的选项): …

python django timezone python-datetime

8
推荐指数
1
解决办法
1699
查看次数

使用 datetime.strptime 加载时指定时区

我有时间数据,我正在使用它转换成时间戳

datetime.datetime.strptime(x,"%Y-%m-%d %H:%M:%S.%f")
Run Code Online (Sandbox Code Playgroud)

问题是,这会隐式加载 UTC 时间,当我尝试将其更改为本地时区时,它会添加/减去时间(将其转换)。

如何加载字符串作为时间戳并将其设置为本地时区(有夏令时)?

python timezone datetime

8
推荐指数
1
解决办法
5670
查看次数

PYTZ'美国/埃德蒙顿'错误地抵消了

可能重复:
pytz的奇怪时区问题

这似乎是错的:

>>> import pytz
>>> z1 = timezone('America/Edmonton')
>>> z2 = timezone('US/Mountain')
>>> z1
<DstTzInfo 'America/Edmonton' LMT-1 day, 16:26:00 STD>
>>> z2
<DstTzInfo 'US/Mountain' MST-1 day, 17:00:00 STD>
>>> pytz.VERSION
'2012f'
>>> 
Run Code Online (Sandbox Code Playgroud)

'America/Edmonton'和'US/Eastern'应该是同一时区(STD的17:00:00).更不用说16:26:00没有任何意义.

- 更新 -

以上是Jon Skeet的回答.但是,当我这样做时,事情变得奇怪:

>>> d = datetime.now()
>>> d
datetime.datetime(2012, 10, 9, 15, 21, 41, 644706)
Run Code Online (Sandbox Code Playgroud)

我创造了一个天真的约会.由于'America/Edmonton' 我的时区,我尝试手动设置:

>>> d2 = d.replace(tzinfo=timezone('America/Edmonton'))
>>> d2
datetime.datetime(2012, 10, 9, 15, 21, 41, 644706, tzinfo=<DstTzInfo 'America/Edmonton' LMT-1 day, 16:26:00 STD>)
Run Code Online (Sandbox Code Playgroud)

这不应该有任何改变,因为这是正确的TZ.然而:

>>> d2.astimezone(timezone('US/Eastern'))
datetime.datetime(2012, 10, …
Run Code Online (Sandbox Code Playgroud)

python timezone pytz

6
推荐指数
1
解决办法
1193
查看次数

为什么用pytz中的tzinfo创建日期时间会显示奇怪的时间偏移?

有人可以解释一下为什么我不能得到相同的结果吗?

import datetime,pytz
var1 = datetime.datetime(2017,10,25,20,10,50,tzinfo=pytz.timezone("Europe/Athens")))
print(var1)
Run Code Online (Sandbox Code Playgroud)

此代码的输出是: 2017-10-25 20:10:50+01:35

import datetime,pytz
var1 = datetime.datetime(2017,10,25,20,10,50)
var1 = pytz.timezone("Europe/Athens").localize(var1)
print(var1)
Run Code Online (Sandbox Code Playgroud)

此代码的输出是: 2017-10-25 20:10:50+03:00

我的问题是为什么他们有不同的时区(1:35和3:00).我知道第二个代码是真的,因为我的UTC是3:00.但是你能告诉我为什么我要进入1:35第一个吗?

python timezone datetime pytz

5
推荐指数
1
解决办法
455
查看次数