我在做一个django项目,我对时区有点困惑。在
我有一个campaing对象,它有publish_start
和{
控制台输出示例
campaingObject.publish_start
datetime.datetime(2015, 9, 1, 0, 0)
campaingObject.publish_end
datetime.datetime(2015, 9, 28, 10, 10)
我想得到现在激活的露营对象。这意味着发布开始时间小于当前时间,结束时间大于当前时间。在
当我打电话给:
^{pr2}$这个结果不在我的时区。我可以通过
datetime.now(pytz.timezone('Europe/Istanbul'))
但这一次我无法比较值来确定当前哪些对象处于活动状态。在
datetime.now(pytz.timezone('Europe/Istanbul')) > campaingObject.publish_end
TypeError: can't compare offset-naive and offset-aware datetimes
如何比较这些时间以找出当前哪些对象处于活动状态?在
在任何地方使用时区感知的日期时间对象。如果^{} ,那么django在内部使用时区感知的datetime对象。特别是,^{} 返回一个有意识的日期时间对象。在
^{} 返回current time zoneyou don't need to call ^{} explicitly 中的当前时间当前时区用于自动呈现。如果默认时区^{} 不适合请求,则可以使用^{} 更改当前时区。在
如果您已经配置了} 。在
USE_TZ=True
;您不应该看到天真的datetime对象。要将current time zone附加到一个朴素的datetime对象,请调用^{通常,您可以直接调用
pytz_timezone.localize()
方法:这是more details about what is ^{} flag and why do you need it, see "Can I just always set is_dst=True?" section 。在
您可以使用django中的
make_aware
函数来处理原始的datetime对象。然后必须指定原始时间戳的时区。在https://docs.djangoproject.com/en/1.8/ref/utils/#django.utils.timezone.make_aware
另一方面,还可以使用
^{pr2}$make_naive
函数从now()时间戳中删除时区信息:https://docs.djangoproject.com/en/1.8/ref/utils/#django.utils.timezone.make_naive
相关问题 更多 >
编程相关推荐