相关疑难解决方法(0)

无法减去offset-naive和offset-aware datetimes

timestamptz在PostgreSQL中有一个时区感知字段.当我从表中提取数据时,我想立即减去时间,以便我可以得到它的年龄.

我遇到的问题是,无论是datetime.datetime.now()datetime.datetime.utcnow()似乎回到时区不知道时间戳,这导致我得到这个错误:

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

有没有办法避免这种情况(最好不使用第三方模块).

编辑:感谢您的建议,但是尝试调整时区似乎给了我错误..所以我只是在PG中使用时区不知道的时间戳并始终使用:

NOW() AT TIME ZONE 'UTC'
Run Code Online (Sandbox Code Playgroud)

这样我的所有时间戳都默认为UTC(尽管这样做更烦人).

python postgresql timezone datetime

271
推荐指数
9
解决办法
19万
查看次数

Python时区转换

我正在寻找一种快速输入时间的方法,然后python将其转换为其他时区(可能最多10个不同的时区)

抱歉.我根本不熟悉python中的时间,如果有人能把我放在正确的方向,我会非常感激.

python timezone

57
推荐指数
8
解决办法
9万
查看次数

如何获取系统时区设置并将其传递给pytz.timezone?

我们可以使用time.tzname获取本地时区名称,但该名称与之不兼容pytz.timezone.

实际上,返回的名称time.tzname含糊不清.此方法('CST', 'CST')在我的系统中返回,但"CST"可以指示四个时区:

  • 中部时区(北美) - 在北美的中部时区观察
  • 中国标准时间
  • 中原标准时间 - "中原标准时间"一词现在在台湾很少使用
  • 澳大利亚中央标准时间(ACST)

python timezone pytz

51
推荐指数
4
解决办法
6万
查看次数

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

如何建立谷歌日历活动的HTML链接?

使用Google日历API v3,我在Google日历中添加了一个事件.现在我想建立一个html链接,以便有人可以点击并查看日历事件.

这是我尝试过的:

<a href="https://www.google.com/calendar/feeds/default/private/full/{{ event.googleID }}">View Google</a>

href看起来像:
https://www.google.com/calendar/feeds/default/private/full/bigstringhere1ovmuup7mjf0

问题是我得到401错误"需要授权"

如何根据Google日历ID构建查看/编辑日历活动的链接?

google-calendar-api google-api

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

python:datetime tzinfo时区名称文档

我有一个约会:

from datetime import datetime
from datetime import tzinfo
test = '2013-03-27 23:05'
test2 = datetime.strptime(test,'%Y-%m-%d %H:%M')
>>> test2
datetime.datetime(2013, 3, 27, 23, 5)

>>> test2.replace(tzinfo=EST)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'EST' is not defined

>> test2.replace(tzinfo=UTC)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'UTC' is not defined
Run Code Online (Sandbox Code Playgroud)

我找不到names可以在replace.tzinfo=调用中分配给tzinfo 的时区列表中的文档.

我已阅读以下内容,但没有任何内容:

http://docs.python.org/2/library/datetime.html#tzinfo-objects

我也在谷歌搜索过.

编辑:我按照unutbu提供的解决方案,但我得到以下内容:

>>> test = '2013-03-27 00:05'
>>> test …
Run Code Online (Sandbox Code Playgroud)

python timezone datetime

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

DateTimeField收到了一个天真的日期时间

我有DateTimeField列的模型.

我试图通过sql查询将带有数据库current_time值的行直接插入到表中.

我对MySQL数据库的SQL查询如下:

INSERT INTO MyTable (..., my_datetime, ...) VALUES (..., current_time, ...)
Run Code Online (Sandbox Code Playgroud)

得到:

运行时警告:DateTimeField ModelName.field_name在时区支持处于活动状态时收到了一个天真的日期时间(2014-01-09 22:16:23).

如何在没有警告的情况下通过sql查询直接将当前时间插入到表中?

python mysql django datetime django-timezone

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

如何在Python中获得人类可读的时区名称?

在我正在开发的Python项目中,我希望能够获得一个"人类可读"的时区名称,其形式为America/New_York,对应于系统本地时区,以显示给用户.我看到的访问时区信息的每一段代码只返回数字偏移量(-0400)或字母代码(EDT),有时两者都返回.是否有一些Python库可以访问这些信息,如果没有,可以将偏移/字母代码转换为人类可读的名称?

如果有一个以上对应于特定时区的人类可读名称,则可能结果列表或其中任何一个都可以,如果没有与当前时区对应的人类可读名称,我将采取无论是异常或None[]或什么的.

python timezone

12
推荐指数
4
解决办法
1万
查看次数

如何让python显示当前时间(东部)

如何让Python显示东部的时间?

我查看了python文档,但这很令人困惑.我正在使用Python 3.

谢谢.

python time datetime

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

getmtime()vs datetime.now():

该代码每年在时钟的晚上(欧洲中部夏令时至中欧时间)每年一次输出错误警告:

import os
import datetime

now = datetime.datetime.now()
age = now - datetime.datetime.fromtimestamp(os.path.getmtime(file_name))
if (age.seconds + age.days * 24 * 3600) < -180:
    print('WARN: file has timestap from future?: %s' % age)
Run Code Online (Sandbox Code Playgroud)

即使在每年一小时的轮班中,如何使此代码正常工作?

更新资料

我只关心年龄,不关心日期时间。

python clock gmt

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

NameError:未定义名称"UTC"

datetime.datetime.now()我的原生时区UTC-8 的输出输出.我想将其转换为适当的时间戳,其tzinfo为UTC.

from datetime import datetime, tzinfo
x = datetime.now()
x = x.replace(tzinfo=UTC)
Run Code Online (Sandbox Code Playgroud)

^ outputs NameError:未定义名称"UTC"

x.replace(tzinfo=<UTC>) 输出SyntaxError:语法无效

x.replace(tzinfo='UTC') 输出TypeError:tzinfo参数必须是None或tzinfo子类,而不是'str'类型

用于完成我的示例的正确语法是什么?

python datetime

7
推荐指数
1
解决办法
5708
查看次数

在 Pandas 中,对忽略 DST 的时间序列使用 tz_localize 的最佳方法是什么?

我有一个时间序列,它是由带有时钟的传感器测量的,该时钟不根据 DST 规则进行调整。因此,日期时间数据与 DST 无关。在 Pandas 中本地化这些数据的最佳方法是什么?

python localization dst pandas

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

在Django/DRF中正确处理日期时间/时区

我正在尝试为我的网络应用程序进行正确的日期处理设置.我有一个看起来像这样的模型

class Entity(models.Model):
    name = models.CharField(max_length=255)
    date = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

用户可以向DRF端点发送请求以/api/v1/entity/获取此类实体的列表.现在要求用户应该能够请求Entity一天的所有对象,这由date参数确定.日期以UTC格式存储在数据库中,而此应用的用户不在UTC时区.

用户可以创建具有以下日期的实体,该实体2018-06-19T01:00:00+02:00存储2018-06-18T23:00:00Z在数据库中.现在,如果我尝试列出用户创建的所有实体2018-06-19,但没有返回任何内容,但过滤2018-06-18返回一个条目.

这是我正在使用的代码设置: http://127.0.0.1:8000/api/v1/entity/?date=2018-06-18.

def get_queryset(self):
    user = self.request.user
    entities = Entity.objects.filter(owner=user)
    date = self.request.query_params.get('date')
    if date:
        entities = entities.filter(date__date=date)
    return entities
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,适当的日期范围是2018-06-18T23:00:00Z- 2018-06-19T23:00:00Z.在用户的时区中获取一天(或日期范围)的所有实体的正确方法是什么?

django timezone datetime django-rest-framework

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