相关疑难解决方法(0)

如何将ISO 8601日期时间字符串转换为Python日期时间对象?

我正在以"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)

我无法找到一种"更清洁"的方式来做到这一点.有吗?

python datetime iso8601 datetime-parsing

397
推荐指数
9
解决办法
34万
查看次数

使用strptime将带有offset的时间戳转换为datetime obj

我正在尝试使用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"是一个糟糕的指令.

任何解决方案的想法?

python datetime timestamp rfc3339

49
推荐指数
3
解决办法
3万
查看次数

将UTC偏移量转换为日期时间对象

给定这个字符串:"Fri, 09 Apr 2010 14:10:50 +0000"如何将其转换为datetime对象?

做了一些阅读后,我觉得这应该有用,但它不...

>>> from datetime import datetime
>>>
>>> str = 'Fri, 09 Apr 2010 14:10:50 +0000'
>>> fmt = '%a, %d %b %Y %H:%M:%S %z'
>>> datetime.strptime(str, fmt)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.6/_strptime.py", line 317, in _strptime
    (bad_directive, format))
ValueError: 'z' is a bad directive in format '%a, %d %b %Y %H:%M:%S %z'
Run Code Online (Sandbox Code Playgroud)

应该注意的是,这没有问题:

>>> from datetime import datetime
>>>
>>> str …
Run Code Online (Sandbox Code Playgroud)

python datetime

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

python:如何处理时间戳(ISO8601)

我必须在python中处理代表iso8601时间戳的字符串.

因此,我的时间戳字符串采用以下形式:

timestamp = "2011-08-18T10:29:47+03:00"
Run Code Online (Sandbox Code Playgroud)

目前我正在使用以下方法在python中转换它们:

timestamp = timestamp[:-6]
timestamp = datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S")
Run Code Online (Sandbox Code Playgroud)

但是这样我就失去了有关时区的所有信息.我在这里看到了很多关于时间戳和python的例子,遗憾的是没有人保留时区,或者只是使用以下方法恢复时区延迟:

delay = timestamp[-6:]
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

timestamp = "2011-08-18T10:29:47+03:00"
timestamp = datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S%z")
Run Code Online (Sandbox Code Playgroud)

但它回来了

ValueError: 'z' is a bad directive in format '%Y-%m-%dT%H:%M:%S%z'
Run Code Online (Sandbox Code Playgroud)

你能提供一些见解吗?

python timezone timestamp

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

以ISO格式打印日期时间,不带毫秒

我正在尝试在API中序列化datetime,但我不想要毫秒.我想要的是:https://en.wikipedia.org/wiki/ISO_8601 -"2015-09-14T17:51:31+00:00"

tz = pytz.timezone('Asia/Taipei')
dt = datetime.datetime.now()
loc_dt = tz.localize(dt)
Run Code Online (Sandbox Code Playgroud)

试试A:

loc_dt.isoformat()
>> '2015-09-17T10:46:15.767000+08:00'
Run Code Online (Sandbox Code Playgroud)

试试B:

loc_dt.strftime("%Y-%m-%dT%H:%M:%S%z")
>> '2015-09-17T10:46:15+0800'
Run Code Online (Sandbox Code Playgroud)

后者几乎是完美的,除了在时区部分缺少冒号.如何在没有字符串操作的情况下解决此问题(删除毫秒或添加冒号)?

python timezone datetime iso

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

python:将pywintyptes.datetime转换为datetime.datetime

我正在使用pywin32读取/写入Excel文件。我在Excel中有一些日期,格式为yyyy-mm-dd hh:mm:ss。我想将它们作为datetime.datetime对象导入Python。这是我开始的代码行:

prior_datetime = datetime.strptime(excel_ws.Cells(2, 4).Value, '%Y-%m-%d %H:%M:%S')
Run Code Online (Sandbox Code Playgroud)

那没用。我得到了错误:

strptime() argument 1 must be str, not pywintypes.datetime
Run Code Online (Sandbox Code Playgroud)

我尝试将其转换为字符串,如下所示:

prior_datetime = datetime.strptime(str(excel_ws.Cells(2, 4).Value), '%Y-%m-%d %H:%M:%S')
Run Code Online (Sandbox Code Playgroud)

那也不起作用。我得到了错误:

ValueError: unconverted data remains: +00:00
Run Code Online (Sandbox Code Playgroud)

因此,我尝试了一些不同的方法:

prior_datetime = datetime.fromtimestamp(int(excel_ws.Cells(2, 4).Value))
Run Code Online (Sandbox Code Playgroud)

仍然没有运气。错误:

TypeError: a float is required.
Run Code Online (Sandbox Code Playgroud)

投向浮动广告并没有帮助。也不是整数。(嘿,我当时很绝望。)

我可能在找错地方,但是我在查找有关pywin32的任何常规文档(尤其是pywintypes或pywintypes.datetime)方面的良好文档时遇到了麻烦。

有什么帮助吗?

python excel pywin32

4
推荐指数
2
解决办法
5271
查看次数