相关疑难解决方法(0)

Python:如何获得"timezone aware"的datetime.today()值?

我试图从值中减去一个日期值datetime.today()来计算多久以前的东西.但它抱怨说:

TypeError: can't subtract offset-naive and offset-aware datetimes
Run Code Online (Sandbox Code Playgroud)

该值datetime.today()似乎不是"时区感知",而我的其他日期值是.如何获得值datetime.today()是时区的?现在它给我时间在当地时间,恰好是PST,即UTC-8hrs.最坏的情况是,有没有办法我可以手动输入时区值到datetime返回的对象datetime.today()并将其设置为UTC-8?当然,理想的解决方案是让它自动知道时区.

python timezone datetime date

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

pytz奇怪的时区问题

>>> import pytz
>>> pytz.timezone('Asia/Hong_Kong')
<DstTzInfo 'Asia/Hong_Kong' LMT+7:37:00 STD>
Run Code Online (Sandbox Code Playgroud)

7小时37分钟的偏移量?这有点奇怪,有没有人遇到同样的问题?

事实上,我之间的行为有所不同

import pytz
from datetime import datetime
hk = pytz.timezone('Asia/Hong_Kong')

dt1 = datetime(2012,1,1,tzinfo=hk)
dt2 = hk.localize(datetime(2012,1,1))
if dt1 > dt2:
   print "Why?"
Run Code Online (Sandbox Code Playgroud)

python pytz

41
推荐指数
3
解决办法
5579
查看次数

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

将tzinfo插入datetime

我有以下tzinfo具体的子类定义:

from datetime import datetime, timedelta, tzinfo

class ManilaTime(tzinfo):
  def utcoffset(self, dt):
    return timedelta(hours=8)

  def tzname(self, dt):
    return "Manila"
Run Code Online (Sandbox Code Playgroud)

我获取了一个日期字符串,并希望将其转换为时区感知datetime对象.我更喜欢使用以下方法:

def transform_date(date_string, tzinfo):
  fmt = '%Y-%m-%d'
  # Where do I insert tzinfo?
  date = datetime.strptime(date_string, fmt)
  return date
Run Code Online (Sandbox Code Playgroud)

有什么方法可以通过以下方式插入tzinfodatetime对象中?

manila = ManilaTime()
date = transform_date('2001-01-01', manila)
Run Code Online (Sandbox Code Playgroud)

python timezone datetime tzinfo

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

为什么datetime为同一时区提供不同的时区格式?

>>> now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
>>> dt = datetime(now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond, pytz.timezone('Asia/Tokyo'))
>>> now
datetime.datetime(2018, 9, 7, 16, 9, 24, 177751, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
>>> dt = datetime(now.year, now.month, now.day, now.hour, now.minute, now.second, now.microsecond, pytz.timezone('Asia/Tokyo'))
>>> dt
datetime.datetime(2018, 9, 7, 16, 9, 24, 177751, tzinfo=<DstTzInfo 'Asia/Tokyo' LMT+9:19:00 STD>)
Run Code Online (Sandbox Code Playgroud)

因为now我得到了JST + 9:00:00,因为dt我得到了LMT +9:19:00.我不明白为什么datetime使用不同的格式.

当我比较他们不同的时间时:

>>> now == dt
False
Run Code Online (Sandbox Code Playgroud)

我怎么能转换LMTJST,这样now == dt …

python python-datetime

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

如何使用时区感知日期过滤模型?

所以我试图按日期过滤 django 模型。仅使用年、年+月或年+月+day_of_month。我现在使用的策略是这样的:

n.filter(create_date__year=q)
n.filter(create_date__year=q[:4],create_date__month=q[4:6])
n.filter(create_date__year=q[:4],create_date__month=q[4:6],create_date__day=q[6:8])
Run Code Online (Sandbox Code Playgroud)

其中 'q' 是格式分别为 'yyyy'、'yyyymm' 或 'yyyymmdd' 的日期字符串。

这工作得很好,django 没有考虑时区。Django 基于 UTC 时间而不是 EDT 进行搜索,这是实际日期时间对象的设置。

有没有办法根据特定时区搜索年/月/日?

python django datetime date

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

标签 统计

python ×6

datetime ×4

date ×2

pytz ×2

timezone ×2

django ×1

python-datetime ×1

tzinfo ×1