我正在以"2009-05-28T16:15:00"的格式获取日期时间字符串(我相信这是ISO 8601).一个hackish选项似乎是使用time.strptime并将元组的前六个元素传递给datetime构造函数来解析字符串,如:
datetime.datetime(*time.strptime("2007-03-04T21:08:12", "%Y-%m-%dT%H:%M:%S")[:6])
Run Code Online (Sandbox Code Playgroud)
我无法找到一种"更清洁"的方式来做到这一点.有吗?
我有一段时间在UTC,从那里我想要自纪元以来的秒数.
我使用strftime将其转换为秒数.以2012年4月1日为例.
>>>datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
Run Code Online (Sandbox Code Playgroud)
2012年4月1日UTC的纪元是1333238400但是这个上面返回1333234800,相差1小时.
所以看起来strftime正在考虑我的系统时间并在某个地方应用时区转换.我以为datetime纯粹是天真的?
我怎么能绕过那个?如果可能的话,避免导入其他库,除非标准.(我有可移植性问题).
我有一个数据集,其中所有日期都具有以下格式:
2012-10-09T19:00:55Z
Run Code Online (Sandbox Code Playgroud)
我希望能够使用像.weekday他们这样的方法.如何在Python中将它们转换为正确的格式?
因此在Python 3中,您可以使用.isoformat()生成ISO 8601日期,但是您无法将isoformat()创建的字符串转换回datetime对象,因为Python自己的日期时间指令不能正确匹配.也就是说,%z = 0500而不是05:00(由.isoformat()生成).
例如:
>>> strDate = d.isoformat()
>>> strDate
'2015-02-04T20:55:08.914461+00:00'
>>> objDate = datetime.strptime(strDate,"%Y-%m-%dT%H:%M:%S.%f%z")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python34\Lib\_strptime.py", line 500, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "C:\Python34\Lib\_strptime.py", line 337, in _strptime
(data_string, format))
ValueError: time data '2015-02-04T20:55:08.914461+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
Run Code Online (Sandbox Code Playgroud)
来自Python的strptime文档:(https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior)
%z UTC格式+ HHMM或-HHMM中的UTC偏移量(如果对象是天真的,则为空字符串).(空),+ 0000,-0400,+ 1030
因此,简而言之,Python甚至不遵守自己的字符串格式化指令.
我知道日期时间在Python中已经很糟糕了,但这真的超出了不合理的范围,变成了愚蠢的土地.
告诉我这不是真的.
我有这个时间戳值由Web服务返回 "2014-09-12T19:34:29Z"
我知道这意味着时区,但究竟是什么意思?
我正在尝试模拟这个Web服务,所以有没有办法strftime在python中生成这个时间戳?
很抱歉,如果这很明显,但谷歌不是很有帮助,也没有strftime()参考页面.
我目前正在使用这个:
x.strftime("%Y-%m-%dT%H:%M:%S%Z")
'2015-03-26T10:58:51'
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用strptime方法将格式为"2012-07-24T23:14:29-07:00"的时间戳转换为python中的datetime对象.问题在于结束时的时间偏移(-07:00).没有偏移我可以成功做到
time_str = "2012-07-24T23:14:29"
time_obj=datetime.datetime.strptime(time_str,'%Y-%m-%dT%H:%M:%S')
Run Code Online (Sandbox Code Playgroud)
但随着我尝试的抵消
time_str = "2012-07-24T23:14:29-07:00"
time_obj=datetime.datetime.strptime(time_str,'%Y-%m-%dT%H:%M:%S-%z').
Run Code Online (Sandbox Code Playgroud)
但是它给出了一个Value错误,说"z"是一个糟糕的指令.
任何解决方案的想法?
我的代码以"YYYY-MM-DD"格式读取大量日期.解析所有这些日期,以便它可以添加一天,两天或三天,然后以相同的格式回写,这会大大减慢速度.
3214657 14.330 0.000 103.698 0.000 trade.py:56(effective)
3218418 34.757 0.000 66.155 0.000 _strptime.py:295(_strptime)
day = datetime.datetime.strptime(endofdaydate, "%Y-%m-%d").date()
Run Code Online (Sandbox Code Playgroud)
有任何建议如何加快一点(或很多)?
我datetime在数据库中存储一个字符串.现在我遇到了一个问题.当我从数据库中获取字符串时,我需要将其转换回datetime对象...
有什么简单的方法吗?
日期时间字符串如下所示:
2010-11-13 10:33:54.227806
Run Code Online (Sandbox Code Playgroud) 我正在尝试验证一个字符串,该字符串应该包含ISO 8601格式的时间戳(通常用于JSON).
strptime在验证零填充时,Python 似乎非常宽容,请参阅下面的代码示例(注意小时缺少前导零):
>>> import datetime
>>> s = '1985-08-23T3:00:00.000'
>>> datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%S.%f')
datetime.datetime(1985, 8, 23, 3, 0)
Run Code Online (Sandbox Code Playgroud)
它优雅地接受一个字符串,该字符串例如小时不填充零,并且不会ValueError像我期望的那样抛出异常.
有没有办法强制执行strptime来验证它是否为零填充?或者Python的标准库中是否还有其他内置函数?
我想避免regexp为此写自己的.
我正在使用 selenium chrome 驱动程序来刮擦 Linkedin 的个人资料。我正在为我的帖子进行分析。这是从 Linkedin 的帖子中以“dd.mm.yyyy”格式而不是“1 个月前”、“2 周前”格式获取确切日期的方法吗?
请帮忙,雅切克
python ×9
datetime ×6
rfc3339 ×4
iso8601 ×2
strftime ×2
timestamp ×2
date ×1
epoch ×1
linkedin-api ×1
performance ×1
selenium ×1
strptime ×1
utc ×1
web-scraping ×1