相关疑难解决方法(0)

python比较不同时区的日期时间

我正在实现预定发布对象的功能.用户选择发布时间,我创建了一个每分钟运行的cron任务,并检查是否是发布的时间.

用户来自不同的时区.

所以我需要比较两个日期时间:

>>user_chosen_time
datetime.datetime(2012, 12, 4, 14, 0, tzinfo=tzinfo(120))
>>curdate=datetime.datetime.now()
datetime.datetime(2012, 12, 4, 18, 4, 20, 17340)
>>user_chosen_time==curdate
*** TypeError: can't compare offset-naive and offset-aware datetimes
Run Code Online (Sandbox Code Playgroud)

抱歉相当愚蠢的问题,但我需要讨论这个问题.谢谢

python python-2.7 python-datetime

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

使用python/django进行日期时间本地化

我正在尝试解析RSS提要.Feed中的条目包含以下日期元素:

<dc:date>2016-09-21T16:00:00+02:00</dc:date>
Run Code Online (Sandbox Code Playgroud)

使用feedparser,我尝试:

published_time = datetime.fromtimestamp(mktime(entry.published_parsed))
Run Code Online (Sandbox Code Playgroud)

但问题是我似乎得到了存储在数据库中的错误时间.在这种特殊情况下,日期时间存储为:

2016-09-21 13:00:00
Run Code Online (Sandbox Code Playgroud)

...当我期望14:00 - 正确的UTC时间.

我认为问题出在我们的django设置中,我们有:

TIME_ZONE = 'Europe/Berlin'
Run Code Online (Sandbox Code Playgroud)

因为当我切换到:

TIME_ZONE = 'UTC'
Run Code Online (Sandbox Code Playgroud)

...数据时间存储为正确的UTC时间:

2016-09-21 14:00:00
Run Code Online (Sandbox Code Playgroud)

有没有办法保持django设置不变,但要正确解析和存储这个日期时间,而不会影响django时区设置?

编辑:也许这样更清楚......

print entry.published_parsed
published_time = datetime.fromtimestamp(mktime(entry.published_parsed))
print published_time
localized_time = pytz.timezone(settings.TIME_ZONE).localize(published_time, is_dst=None)
print localized_time

time.struct_time(tm_year=2016, tm_mon=9, tm_mday=21, tm_hour=14, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=265, tm_isdst=0)
2016-09-21 15:00:00
2016-09-21 15:00:00+02:00
Run Code Online (Sandbox Code Playgroud)

python django datetime feedparser

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

Python - 获取日期格式

我将日期作为字符串获取,然后将其解析为 datetime 对象。有什么方法可以检查对象的日期格式是什么?

假设这是我正在创建的对象:

modified_date = parser.parse("2015-09-01T12:34:15.601+03:00")
Run Code Online (Sandbox Code Playgroud)

我如何打印或获取此对象的确切日期格式,我需要它以验证它的格式是否正确,因此我将能够对今天的日期和给定的日期进行比较。

python datetime-format python-dateutil

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

Python 中的日期可以感知时区吗?

关于确保日期时间是特定时区有很多答案。例如,您可以确保您的日期时间是 UTC

from datetime import datetime
import pytz

now_utc = datetime.utcnow()
Run Code Online (Sandbox Code Playgroud)

产生:

日期时间. 日期时间(2017, 5, 11, 17, 37, 5, 602054)

您可以使该日期时间了解其时区(例如,断言两个不同的日期时间对象来自同一时区)

now_utc_aware = datetime.now(pytz.utc) 
Run Code Online (Sandbox Code Playgroud)

datetime.datetime(2017, 5, 11, 17, 38, 2, 757587, tzinfo=< UTC>)

但是,当我从时区感知的日期时间中提取日期时,我似乎失去了时区感知。

now_utc_aware.date()
Run Code Online (Sandbox Code Playgroud)

日期时间.日期(2017, 5, 11)

有趣的是,有一个 SO 问题似乎正是在问这个问题,并且特别是关于日期(datetime.today()),但答案(包括已接受的答案)与日期时间相关。我见过的为日期时间添加时区感知的代码似乎都会在我的datetime.date对象上引发错误。

是否可以向日期对象添加时区感知?

python timezone datetime date pytz

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

根据时间戳进行选择并用零更新时间戳

如何从 MongoDB 集合中时间 (HH:MM:SS.Milisecond) 值大于零的日期字段中选择记录,并通过保留日期将时间 (HH:MM:SS) 值更新为零值与 Python 脚本中的现有值相同吗?

当前数据如下所示 -

1) "createdDate" : ISODate("2015-10-10T00:00:00Z")
2) "createdDate" : ISODate("2015-10-11T00:00:00Z")
3) "createdDate" : ISODate("2015-10-12T00:00:00Z")
4) "createdDate" : ISODate("2015-10-13T01:04:30.515Z")
5) "createdDate" : ISODate("2015-10-14T02:05:50.516Z")
6) "createdDate" : ISODate("2015-10-15T03:06:60.517Z")
7) "createdDate" : ISODate("2015-10-16T04:07:80.518Z")
Run Code Online (Sandbox Code Playgroud)

如何在 Python 脚本中使用仅选择第 4、5、6 和 7 行mongodbsql并将其更新为时间戳为零?

更新后,数据将如下所示 -

1) "createdDate" : ISODate("2015-10-10T00:00:00Z")
2) "createdDate" : ISODate("2015-10-11T00:00:00Z")
3) "createdDate" : ISODate("2015-10-12T00:00:00Z")
4) "createdDate" : ISODate("2015-10-13T00:00:00Z")
5) "createdDate" : ISODate("2015-10-14T00:00:00Z")
6) "createdDate" : ISODate("2015-10-15T00:00:00Z")
7) "createdDate" : ISODate("2015-10-16T00:00:00Z")
Run Code Online (Sandbox Code Playgroud)

python datetime mongodb pymongo mongodb-query

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

从datetime对象中减去datetime.datetime.now()

我有一个字符串,我已使用解析转换为日期时间对象.

time = 'Tue, 30 Sep 2014 16:19:08 -0700 (PDT)'
date_object = parse(time)
Run Code Online (Sandbox Code Playgroud)

我想找到从那时起已经过去的时间.我尝试使用datetime.datetime.now()和减去这两个,但它们是不同的格式,并抛出一个错误.

做这个的最好方式是什么?

python datetime

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