我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将其转换为其他时区(可能最多10个不同的时区)
抱歉.我根本不熟悉python中的时间,如果有人能把我放在正确的方向,我会非常感激.
我们可以使用time.tzname
获取本地时区名称,但该名称与之不兼容pytz.timezone
.
实际上,返回的名称time.tzname
含糊不清.此方法('CST', 'CST')
在我的系统中返回,但"CST"可以指示四个时区:
>>> 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) 使用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构建查看/编辑日历活动的链接?
我有一个约会:
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) 我有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项目中,我希望能够获得一个"人类可读"的时区名称,其形式为America/New_York,对应于系统本地时区,以显示给用户.我看到的访问时区信息的每一段代码只返回数字偏移量(-0400)或字母代码(EDT),有时两者都返回.是否有一些Python库可以访问这些信息,如果没有,可以将偏移/字母代码转换为人类可读的名称?
如果有一个以上对应于特定时区的人类可读名称,则可能结果列表或其中任何一个都可以,如果没有与当前时区对应的人类可读名称,我将采取无论是异常或None
或[]
或什么的.
如何让Python显示东部的时间?
我查看了python文档,但这很令人困惑.我正在使用Python 3.
谢谢.
该代码每年在时钟的晚上(欧洲中部夏令时至中欧时间)每年一次输出错误警告:
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)
即使在每年一小时的轮班中,如何使此代码正常工作?
我只关心年龄,不关心日期时间。
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'类型
用于完成我的示例的正确语法是什么?
我有一个时间序列,它是由带有时钟的传感器测量的,该时钟不根据 DST 规则进行调整。因此,日期时间数据与 DST 无关。在 Pandas 中本地化这些数据的最佳方法是什么?
我正在尝试为我的网络应用程序进行正确的日期处理设置.我有一个看起来像这样的模型
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
.在用户的时区中获取一天(或日期范围)的所有实体的正确方法是什么?
python ×11
datetime ×6
timezone ×6
django ×2
pytz ×2
clock ×1
dst ×1
gmt ×1
google-api ×1
localization ×1
mysql ×1
pandas ×1
postgresql ×1
time ×1