在Python 3.6中转换DateTime的偏移



我在发布此之前已经进行了足够的研究,我知道有很多类似的问题,但是它们都没有一个稳固或统一的解决方案,而且我的情况略有不同。

我的情况很简单。我有以下值存储在变量中的值2019-07-31 12:02:35+00:00。我想单独将小时的部分分开。这可以使用" strptime"完成,我尝试了以下方法onlytime = datetime.datetime.strptime(str(dateandtime), "%Y-%m-%d %H:%M:%S%z"),但我被显示为以下错误

" valueerror:时间数据'2019-07-31 12:02:35 00:00'不匹配 格式'%y-%m-%d%h:%m:%s %% z'

%z应该与Pyhton 3.2及以上合作,以便不应该是问题。我还尝试了date-utils((,但是文档很困惑,我找不到在这里正确使用它们的方法。那么,在这里可以做什么以实现我的用例?以下是我的整个代码:

#!/usr/bin/env python3
import boto3
from datetime import date, datetime, timedelta
import datetime
inputdata = boto3.client('s3')
details = inputdata.list_objects_v2(Bucket='testbucket')
for timedetails in details['Contents']:
    dateandtime = timedetails['LastModified']
    onlytime = datetime.datetime.strptime(str(dateandtime), "%Y-%m-%d %H:%M:%S%z")
    print (onlytime)

更新:当我单独执行DateTime部分时,同一程序在在线编译器中工作。因此,我添加了有关输入JSON的更多详细信息:这是存储在变量details

中的JSON
{
'Contents': [{
        u 'LastModified': datetime.datetime(2019, 7, 31, 12, 2, 35, tzinfo = tzlocal()),
        u 'ETag': '"1a8f23054d922eff88a644bd003e6397"',
        u 'StorageClass': 'STANDARD',
        u 'Key': u 'EVNET- task & window.docx',
        u 'Size': 783570
    }
}

但是,当我打印dateandtime中存储的值时,它显示为2019-07-31 12:02:35+00:00。我不确定这些细节是否可能意味着什么。

在版本3.7中更改:当将%z指令提供给Strptime((方法时,UTC Offset可以在小时,分钟和秒之间将结肠作为分离器。例如,' 01:00:00'将被解析为一个小时的抵消。此外,提供" z"与' 00:00'相同。

看来Python 3.6仅支持 0000,没有结肠

https://docs.python.org/3.7/library/datetime.html#strftime-and-strptime-behavior

这是什么:

import datetime
import re
regex = r"([+-])([0-9]{2}):([0-9]{2})"
subst = "\1\2\3"
dateandtime = "2019-07-31 12:02:35+00:00"
dateandtime = re.sub(regex, subst, dateandtime, 0)
print(dateandtime)
onlytime = datetime.datetime.strptime(str(dateandtime),"%Y-%m-%d %H:%M:%S%z")
print(onlytime)

问题是UTC偏移。RFC 3339 Internet日期/时间格式要求每个日期时间都包含UTC偏移,并且这些偏移可以是Z(" Zulu Time"的缩写(或 HH:MM或-HH:MM格式,例如 05:00或-10:30。

因此,这些都是有效的RFC 3339数据:

2008-09-03T20:56:35.450686Z
2008-09-03T20:56:35.450686+05:00
2008-09-03T20:56:35.450686-10:30

a,strptime和strftime使用的格式字符串没有指令,与RFC 3339格式的UTC偏移相对应。您需要使用第三方库或分析而无需偏移。

有用的链接

最新更新