第一种方法
strftime()
和 strptime()
的使用
函数 | 功能 |
---|---|
strftime | 日期时间 转 文本 |
strptime | 文本 转 日期时间 |
import datetime
dt = datetime.datetime.strptime('2018-12-10T07:46:45.743+0000','%Y-%m-%dT%H:%M:%S.%f%z')
#datetime.datetime(2018, 12, 10, 7, 46, 45, 743000, tzinfo=datetime.timezone.utc)
print(dt)
#2018-12-10 07:46:45.743000+00:00
datetime.datetime.strftime(dt,'%y-%m-%d %H:%M:%S')
#'18-12-10 07:46:45'
这里只列一下我用到的,更多可以看官方文档:
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
%字符 | 表意 | 数值范围 |
---|---|---|
%y | 年(2位) | 00, 01, …, 99 |
%Y | 年(4位) | 0001, 0002, …, 2013, 2014, …, 9998, 9999 |
%m | 月 | 01, 02, …, 12 |
%d | 日 | 01, 02, …, 31 |
%H | 时(24小时制) | 00, 01, …, 23 |
%M | 分 | 00, 01, …, 59 |
%S | 秒 | 00, 01, …, 59 |
%f | 毫秒 | 000000, 000001, …, 999999 |
%z | 时区 | (empty), +0000, -0400, +1030, +063415, -030712.345216 |
第二种方法
不用去操心文本格式,不用%去匹配,直接自动出结果
from dateutil.parser import parse
dt = parse("2018-12-10T07:46:45.743+0000")
#datetime.datetime(2018, 12, 10, 7, 46, 45, 743000, tzinfo=tzutc())
print(dt)
#2018-12-10 07:46:45.743000+00:00
时区转换
将日期时间的时区,转换为东8区,也就是中国时间显示。
from dateutil.parser import parse
import pytz
dt = parse("2018-12-10T07:46:45.743+0000")
#datetime.datetime(2018, 12, 10, 7, 46, 45, 743000, tzinfo=tzutc())
# 时区转换
dt1=dt.astimezone(pytz.timezone("Asia/Shanghai"))
#datetime.datetime(2018, 12, 10, 15, 46, 45, 743000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
# 同一个时间,不同时区的结果
print('%s\n%s'%(dt,dt1))
#2018-12-10 07:46:45.743000+00:00
#2018-12-10 15:46:45.743000+08:00
============================================
本文中的第二种方法和时区转换方法是从https://blog.csdn.net/junbujianwpl/article/details/79007371看到并整理过来的