相关疑难解决方法(0)

Python 2.7如何使用格式解析日期2014-05-01 18:10:3​​8-04:00

我正在尝试解析这个日期时间字符串,但还没有成功,我怎么能得到它?

d = '2014-05-01 18:10:38-04:00'
datetime.datetime.strptime(d,'%Y-%m-%d %H:%M:%S-%Z')

ValueError: time data '2014-05-01 18:10:38-04:00' does not match format '%Y-%m-%d %H:%M:%S%Z'
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

Python datetime.strptime,ISO 8601

假设我有以下datetime对象:

>>> dt
datetime.datetime(2015, 5, 13, 18, 5, 55, 320000, tzinfo=datetime.timezone(datetime.timedelta(-1, 61200)))
Run Code Online (Sandbox Code Playgroud)

我可以用ISO 8601格式打印该对象,如下所示:

>>> dt.isoformat()
'2015-05-13T18:05:55.320000-07:00'
Run Code Online (Sandbox Code Playgroud)

在Python 3.4下,如果我删除时区中的冒号,我可以解析ISO 8601字符串的字符串:

>>> import re
>>> ts='2015-05-13T18:05:55.320-07:00'
>>> tf="%Y-%m-%dT%H:%M:%S.%f%z"
>>> tsm=re.sub(r'([+-]\d+):(\d+)$', r'\1\2', '2015-05-13T18:05:55.320-07:00')
>>> tsm
'2015-05-13T18:05:55.320-0700'
>>> datetime.datetime.strptime(tsm, tf)
datetime.datetime(2015, 5, 13, 18, 5, 55, 320000, tzinfo=datetime.timezone(datetime.timedelta(-1, 61200)))
Run Code Online (Sandbox Code Playgroud)

在Python 2.7下,情况更糟,因为它%z似乎没有记录的工作:

>>> tsm='2015-05-13T18:05:55.320-0700'
>>> tf="%Y-%m-%dT%H:%M:%S.%f%z"
>>> datetime.datetime.strptime(tsm, tf)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_strptime.py", line 317, in _strptime
    (bad_directive, format)) …
Run Code Online (Sandbox Code Playgroud)

python datetime iso python-2.7 python-3.x

6
推荐指数
0
解决办法
79
查看次数

Python datetime.fromisoformat() 拒绝 JavaScript 日期/时间字符串:ValueError:无效的 isoformat 字符串

为什么下面的 JS 日期字符串失败?它从 JS Date 对象传递到 Python 后端。

2021-12-31T05:00:00.000Z


mydate = datetime.fromisoformat(form['expirationDate'])
Run Code Online (Sandbox Code Playgroud)

错误:

ValueError: Invalid isoformat string: '2021-12-31T05:00:00.000Z'
Run Code Online (Sandbox Code Playgroud)

python

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

Python:从字符串中解析ISO 8601日期和时间(使用标准模块)

我想解析SVN给出的条目的日期:

svn list --xml https://subversion:8765/svn/Foo/tags/
Run Code Online (Sandbox Code Playgroud)

如果我没有弄错,则使用ISO 8601标准.一个例子是:

dateString = "2012-02-14T11:22:34.593750Z"
Run Code Online (Sandbox Code Playgroud)

我正在使用Python 2.7,我正在寻找最好的处理方法,仅使用标准模块.我想我会用正则表达式解析它:^---是一个匹配组,A表示我会假设它们总是存在(这可能是一个弱点)

dateString = "2012-02-14T11:22:34.593750Z"
              ^--- ^- ^-A^- ^- ^--------A
                        |               |
                        |  I think it always gives the date
                        |  as UTC, which Z means in ISO 8601.
                        |
                 Just a separator
Run Code Online (Sandbox Code Playgroud)

解析之后,我只需从中创建一个日期时间.

有没有更好的方法使用Python 2.7只有标准模块?

python python-2.7

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

从Python中的GitHub API解析并格式化日期

GitHub API请求返回的当前值如下所示:

2013-09-12T22:42:02Z

如何解析此值并使其看起来更好?

python github-api python-3.x

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

如何将“Tue Feb 25 2014 00:00:00 GMT+0530 (IST)”转换为python日期时间对象?

我对 dateformat 有一些疑问Tue Feb 25 2014 00:00:00 GMT+0530 (IST)

  • 确实Tue Feb 25 2014 00:00:00意味着GMTIST
  • 是否可以将其转换为 python datetime
  • 是否可以将其转换为DD-MM-YY,HH:MM:SSGMT 格式。

这是我尝试转换成的内容python datetime::

但当我尝试使用时出现错误%z

>>> time_format="%a %b %d %Y %H:%M:%S GMT%z (%Z)"
>>> v="Tue Feb 25 2014 00:00:00 GMT+0530 (IST)"
>>> mydate=datetime.strptime(v,time_format)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/_strptime.py", line 317, in _strptime
    (bad_directive, format))
ValueError: 'z' is a bad directive in …
Run Code Online (Sandbox Code Playgroud)

python timezone datetime python-datetime

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

在Python中验证ISO-8601日期时间字符串?

我想编写一个函数,该函数接受一个字符串并返回True一个有效的ISO-8601日期时间(精确到微秒,包括时区偏移量),False否则返回。

我发现其他 问题提供了不同的解析日期时间字符串的方式,但是我只想返回TrueISO-8601格式。除非对不匹配ISO-8601的格式抛出错误,否则解析不会对我有帮助。

(我在代码的其他地方使用了漂亮的箭头库。arrow欢迎使用该解决方案。)


编辑:似乎在通用Python日期时间包中不存在“此字符串是否为有效的ISO 8601日期时间”的常规解决方案。

因此,为了使这个问题更窄,更具体和可回答,我将选择一种格式字符串,该格式字符串将验证以下格式的日期时间字符串:

'2016-12-13T21:20:37.593194+00:00'
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用:

format_string = '%Y-%m-%dT%H:%M:%S.%f%z'
datetime.datetime.strptime(my_timestamp, format_string)
Run Code Online (Sandbox Code Playgroud)

这给出:

ValueError: time data '2016-12-13T21:20:37.593194+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
Run Code Online (Sandbox Code Playgroud)

问题似乎在于UTC偏移(+00:00)中的冒号。如果我使用不带冒号的偏移量(例如'2016-12-13T21:20:37.593194+0000'),则可以按预期正确解析。显然,这是因为datetime%z令牌不尊重带有冒号的UTC偏移量格式,只有不包含冒号的格式,即使这两个规范均有效

python validation datetime iso8601 arrow-python

4
推荐指数
3
解决办法
7011
查看次数

易于使用的Python时间戳

我正在使用Python编写日志类型的应用程序.该应用程序基本上允许用户在日志中写入条目,并添加时间戳以便以后查询日志.

截至目前,我使用该time.ctime()函数生成视觉上友好的时间戳.因此日记帐分录如下:

Thu Jan 21 19:59:47 2010 Did something
Thu Jan 21 20:01:07 2010 Did something else
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够使用这些时间戳来进行一些搜索/查询.我需要能够搜索"2010","2010年2月"或"2010年2月23日".

我的问题是:

1)我应该使用什么时间模块:timevs datetime

2)创建和使用时间戳对象的适当方法是什么?

非常感谢!

python time datetime timestamp

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

Django dateutil ISO 8601没有'读'属性错误

我在Django视图中将日期时间转换为ISO 8601以推送到Facebook页面事件.我尝试过datetime.strptime但是遵循最佳建议我选择了:

    eventdate = event.date
    print eventdate
    date_iso = dateutil.parser.parse(eventdate)
Run Code Online (Sandbox Code Playgroud)

我打印时,eventdate在控制台中看起来像这样,2013-06-18 02:50:00但在我得到之前它没有进一步:

Django Version: 1.4.1
Exception Type: AttributeError
Exception Value:    
'datetime.datetime' object has no attribute 'read'
Exception Location: /Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages/dateutil/parser.py in get_token, line 72
Python Executable:  /Users/mirth/.virtualenvs/ssc/bin/python
Python Version: 2.7.2
Python Path:    
['/Users/mirth/code/django/ssc',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages/requests/packages',
 '/Users/mirth/code/django/ssc/main',
 '/Users/mirth/code/django/ssc/main/../',
 '/Users/mirth/code/django/ssc',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg',
 '/Users/mirth/.virtualenvs/ssc/lib/python27.zip',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/plat-darwin',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/plat-mac',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/plat-mac/lib-scriptpackages',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/lib-tk',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/lib-old',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/lib-dynload',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
 '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages',
 '/Users/mirth/.virtualenvs/ssc/lib/python2.7/site-packages/PIL']
Run Code Online (Sandbox Code Playgroud)

这可能是什么?谢谢

python django iso8601 python-dateutil

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

检查日期字符串是否为UTC格式

我有一个日期字符串,如"2011-11-06 14:00:00 + 00:00".有没有办法检查这是否是UTC格式?我尝试将上面的字符串转换为datetime对象,utc = datetime.strptime('2011-11-06 14:00:00+00:00','%Y-%m-%d %H:%M%S+%z)以便我可以将它与pytz.utc进行比较,但我得到'ValueError:'z'是格式为'%Y-%m-%d%H的错误指令: %M%S +%Z"

如何检查日期字符串是否为UTC?一些例子将非常感激.

谢谢

python datetime pytz

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

将 xsd:dateTime 格式的字符串解析为 python datetime

给定一个xsd:dateTime 格式的字符串,我想创建一个 python datetime 对象。我特别需要能够解析例如像这样的字符串 '2012-09-23T09:55:00',而且所有其他定义的示例都应该正确解析,并且还使用时区。

python timezone datetime xsd

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