我正在尝试解析这个日期时间字符串,但还没有成功,我怎么能得到它?
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) 假设我有以下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) 为什么下面的 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) 我想解析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只有标准模块?
我对 dateformat 有一些疑问Tue Feb 25 2014 00:00:00 GMT+0530 (IST)。
Tue Feb 25 2014 00:00:00意味着GMT或ISTdatetime。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) 我想编写一个函数,该函数接受一个字符串并返回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编写日志类型的应用程序.该应用程序基本上允许用户在日志中写入条目,并添加时间戳以便以后查询日志.
截至目前,我使用该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)创建和使用时间戳对象的适当方法是什么?
非常感谢!
我在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)
这可能是什么?谢谢
我有一个日期字符串,如"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?一些例子将非常感激.
谢谢
给定一个xsd:dateTime 格式的字符串,我想创建一个 python datetime 对象。我特别需要能够解析例如像这样的字符串 '2012-09-23T09:55:00',而且所有其他定义的示例都应该正确解析,并且还使用时区。
python ×11
datetime ×6
python-2.7 ×3
iso8601 ×2
python-3.x ×2
timezone ×2
arrow-python ×1
django ×1
github-api ×1
iso ×1
pytz ×1
time ×1
timestamp ×1
validation ×1
xsd ×1