How to parse time retrieved from Facebook Graph into 12 hour format?
当我从脸书图表开始时,出现在这个表格中:
1 | 2017-09-26T18:00:00+0300 |
我想把它转换成现实的格式
ZZU1
而它来到这里,就像这样:
1 | Tue, 26 Sep 2017 18:00:00 |
这是好的,但它失去了UTC的胶印,我喜欢它在PM格式。
Thus,I would like this:
1 | Tue, 26 Sep 2017 9:00 PM |
这一次,用UTC表示,格式似乎是
python 2.6+或python 3.3+:
使用
1 2 3 4 5 6 7 8 9 10 11 12 | from dateutil.parser import parse # In Python 2.7, you need to use another one from dateutil.tz import tzutc UTC = tzutc() dt_str = '2017-09-26T18:00:00+0300' dt = parse(dt_str) dt_utc = dt.astimezone(UTC) # Convert to UTC print(dt_utc.strftime('%a, %b %d %Y %I:%M:%S %p')) # Tue, Sep 26 2017 03:00:00 PM |
我注意到的一件事是,据我所知,您提供的日期表示UTC中的下午3点,而不是9点(如您的示例所述)。这是您应该使用
如果要包括时区偏移量信息,还可以在未转换的
1 2 | print(dt.strftime('%a, %b %d %Y %I:%M:%S%z %p')) # Tue, Sep 26 2017 06:00:00+0300 PM |
。
此
仅限python 3.2+:
假设您知道输入字符串的确切格式,在python 3.2+中,您可以在不拉入
1 2 3 4 5 6 7 8 9 10 11 12 | from datetime import datetime, timezone UTC = timezone.utc dt_str = '2017-09-26T18:00:00+0300' dt = datetime.strptime(dt_str, '%Y-%m-%dT%H:%M:%S%z') dt_utc = dt.astimezone(UTC) print(dt_utc.strftime('%a, %b %d %Y %I:%M:%S %p')) # Tue, Sep 26 2017 03:00:00 PM print(dt.strftime('%a, %b %d %Y %I:%M:%S%z %p')) # Tue, Sep 26 2017 06:00:00+0300 PM |
要进入12小时格式并保持与UTC的偏移以便打印,请执行以下操作:
1 2 3 4 5 6 7 8 9 10 | from dateutil.parser import parse event_date = '2017-09-26T18:00:0+0300' date = parse(event_date) offset = date.tzinfo._offset readable_event_date = (date + offset).strftime('%a, %b %d %Y %I:%M:%S %p') print(readable_event_date) |
输出:
1 | 'Tue, Sep 26 2017 09:00:00 PM' |
号