标签: python-dateutil

将时区缩写的非UTC时间字符串转换为python中的UTC时间,同时考虑夏令时

由于时区缩写,我很难将非UTC时间的字符串表示转换为UTC.

(更新:似乎时区缩写可能不是唯一的.如果是这样,也许我也应该考虑这一点.)

我一直在尝试使用datetutil和pytz寻找方法,但没有任何运气.

建议或解决方法将不胜感激.

string = "Jun 20, 4:00PM EDT" 
Run Code Online (Sandbox Code Playgroud)

我想将其转换为UTC时间,在适当的时候考虑夏令时.

更新:找到一些可能有助于更有经验的用户回答Q的参考资料.

从本质上讲,我会想象的解决方案做相反的一部分这个.

最终更新(重要)

取自dateutil docs示例.

一些基于date命令的简单示例,使用TZOFFSET字典提供BRST时区偏移量.

解析("Thu Sep 25 10:36:28 BRST 2003",tzinfos = TZOFFSETS)datetime.datetime(2003,9,25,10,36,28,tzinfo = tzoffset('BRST', - -10800))

parse("2003 10:36:28 BRST 25 Sep Thu",tzinfos = TZOFFSETS)datetime.datetime(2003,9,25,10,36,28,tzinfo = tzoffset('BRST', - -10800))

将其与此处的库相结合.你将有一个解决这个问题的方法.

python utc pytz dst python-dateutil

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

使dateutil解析器为模糊日期引发错误

dateutil.parser用于解析给定的字符串并将其转换为datetime.datetime对象.它通过允许dayfirst和yearfirst参数给出某种格式的先例来处理模糊日期,如"2-5-2013" .

如果遇到模糊日期,解析器是否可能引发错误?我想这将需要修改源代码(parser.py左右线)675/693/696,但如果有不需要逐字修改源代码,而不是仅仅涉及重新定义某些功能的方式,那简直太好了同样.

目前的行为:

>>> from dateutil import parser
>>> parser.parse("02-03-2013")
datetime.datetime(2013, 2, 3, 0, 0)
Run Code Online (Sandbox Code Playgroud)

期望的行为:

>>> from dateutil import parser
>>> parser.parse("02-03-2013")
Traceback (most recent call last):
..
ValueError: The date was ambiguous...<some text>
Run Code Online (Sandbox Code Playgroud)

python python-dateutil

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

Python的dateutil.tz.tzstr在字符串参数上失败

在dateutil2.2中,我无法使tzstr示例工作(见下文).它抛出一个错误'str' object has no attribute 'read'.查看代码,它失败了self.instream.read(1).我应该通过什么类型的?

In [3]: import dateutil.tz

In [4]: dateutil.tz.tzstr('EST5EDT')
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-4-75889fcde3a9> in <module>()
----> 1 dateutil.tz.tzstr("PST")

/Library/Python/2.7/site-packages/dateutil/tz.pyc in __init__(self, s)
    579         self._s = s
    580
--> 581         res = parser._parsetz(s)
    582         if res is None:
    583             raise ValueError("unknown string format")

/Library/Python/2.7/site-packages/dateutil/parser.pyc in _parsetz(tzstr)
    923 DEFAULTTZPARSER = _tzparser()
    924 def _parsetz(tzstr):
--> 925     return DEFAULTTZPARSER.parse(tzstr)
    926
    927

/Library/Python/2.7/site-packages/dateutil/parser.pyc in parse(self, tzstr)
    770 …
Run Code Online (Sandbox Code Playgroud)

python timezone python-dateutil

5
推荐指数
0
解决办法
523
查看次数

Python的datetime strptime()在机器之间不一致

我很难过.我编写的日期清理功能在我的Mac上使用Python 2.7.5,但在我的Ubuntu服务器上不在2.7.6中.

Python 2.7.5 (default, Mar  9 2014, 22:15:05) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> date = datetime.strptime('2013-08-15 10:23:05 PDT', '%Y-%m-%d %H:%M:%S %Z')
>>> print(date)
2013-08-15 10:23:05
Run Code Online (Sandbox Code Playgroud)

为什么这在Ubuntu的2.7.6中不起作用?

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> date = datetime.strptime('2013-08-15 10:23:05 PDT', '%Y-%m-%d %H:%M:%S %Z') …
Run Code Online (Sandbox Code Playgroud)

python timezone datetime cross-platform python-dateutil

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

Python dateutil日期转换

我想看看日期列表是否是有效日期.我正在使用dateutil库,但我得到了奇怪的结果.例如,当我尝试以下操作时:

import dateutil.parser as parser
x = '10/84'
date = (parser.parse(x))
print(date.isoformat())
Run Code Online (Sandbox Code Playgroud)

我得到的结果1984-10-12T00:00:00是错的.有谁知道为什么这12会被添加到日期?

python python-dateutil

5
推荐指数
2
解决办法
1210
查看次数

dateutil.rrule.rrule.between()仅提供日期之后的日期

从IPython控制台:

In [16]: b
Out[16]: datetime.datetime(2008, 3, 1, 0, 0)

In [17]: e
Out[17]: datetime.datetime(2010, 5, 2, 0, 0)

In [18]: rrule(MONTHLY).between(b, e, inc=True)
Out[18]:
[datetime.datetime(2009, 3, 6, 14, 42, 1),
 datetime.datetime(2009, 4, 6, 14, 42, 1),
 datetime.datetime(2009, 5, 6, 14, 42, 1),
 datetime.datetime(2009, 6, 6, 14, 42, 1),
 datetime.datetime(2009, 7, 6, 14, 42, 1),
 datetime.datetime(2009, 8, 6, 14, 42, 1),
 datetime.datetime(2009, 9, 6, 14, 42, 1),
 datetime.datetime(2009, 10, 6, 14, 42, 1),
 datetime.datetime(2009, 11, 6, 14, 42, 1),
 datetime.datetime(2009, …
Run Code Online (Sandbox Code Playgroud)

python rrule python-dateutil

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

检测重叠日期重复规则

我正在使用一个看起来像 Google 日历的应用程序,但有一个主要区别:事件不应与其他事件有交叉。这意味着没有两个事件可以共享相同的时间,即使是分钟粒度。这对于仅存储会议的日历特别有用,因为不可能同时参加两个会议。

就像 Google 日历一样,可以使用重复规则(例如,每个周五和周日上午 10 点到下午 13 点)创建事件。因此,我想仅使用rrules(python-dateutil 模块)来检测重叠事件,而不需要创建 N 个日期时间对象并检查每个对象的交集。

是否可以仅使用 rrules 来检测重叠日期?另一个库中是否已经实现了类似的功能?

python intersection interval-intersection python-datetime python-dateutil

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

Python提前几天/几周/几个月

我一直在通过stackoverflow搜索答案,但我无法在Python和Pythonic方式中找到我正在寻找的东西.

我试图根据两个日期提前几天,几周或几个月.这是我创建的一个小脚本,它可以做我想做的事情,但我很关心它.

import datetime
from dateutil.relativedelta import relativedelta


now = datetime.datetime.now()
days_ahead = datetime.datetime.now() + relativedelta(days=3)
weeks_ahead = datetime.datetime.now() + relativedelta(weeks=2)
month_ahead = datetime.datetime.now() + relativedelta(months=1)
months_ahead = datetime.datetime.now() + relativedelta(months=3)


def get_relative_date(dt):

    ahead = (dt - now).days

    if ahead < 7:
        return "Due in " + str(ahead) + " days"

    elif ahead < 31:
        return "Due in " + str(ahead/7) + " weeks"

    else:
        return "Due in " + str(ahead/30) + " months"

print get_relative_date(days_ahead)
print get_relative_date(weeks_ahead)
print get_relative_date(month_ahead) …
Run Code Online (Sandbox Code Playgroud)

python datetime python-dateutil

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

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获取当月的最后一个星期四

按照这个答案,我试图获取当月最后一个星期四的日期。但是我的代码没有跳出循环。

from datetime import datetime
from dateutil.relativedelta import relativedelta, TH

todayte = datetime.today()
cmon = todayte.month

nthu = todayte
while nthu.month == cmon:
    nthu += relativedelta(weekday=TH(1))
    #print nthu.strftime('%d%b%Y').upper()
Run Code Online (Sandbox Code Playgroud)

python datetime python-dateutil

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