我正在尝试从的值中减去一个日期值,datetime.today()以计算某物是多久以前的。但它抱怨:
datetime.today()
TypeError: can't subtract offset-naive and offset-aware datetimes
该值datetime.today()似乎不是“时区感知”的,而我的其他日期值是。我如何获得datetime.today()时区感知的值?
现在,这给了我当地时间,正好是PST,即UTC-8个小时。最坏的情况是,有没有一种方法可以手动将时区值输入datetime返回的对象datetime.today()并将其设置为UTC-8?
datetime
当然,理想的解决方案是自动知道时区。
在标准库中,没有跨平台的方法来创建感知时区而不创建自己的时区类。
在Windows上有win32timezone.utcnow(),但这是pywin32的一部分。我宁愿建议使用pytz库,该库具有大多数时区的不断更新的数据库。
win32timezone.utcnow()
使用本地时区可能非常棘手(请参见下面的“更多阅读”链接),因此您可能希望在整个应用程序中使用UTC,尤其是对于算术运算(如计算两个时间点之间的时差)。
您可以像这样获取当前日期/时间:
import pytz from datetime import datetime datetime.utcnow().replace(tzinfo=pytz.utc)
记住这一点datetime.today()并datetime.now()返回 本地 时间,而不是UTC时间,因此.replace(tzinfo=pytz.utc)向他们申请将是不正确的。
datetime.now()
.replace(tzinfo=pytz.utc)
另一个不错的方法是:
datetime.now(pytz.utc)
有点短,并且做的一样。