time模块的时间字符串的转换
主要用到time模块的strptime()、mktime()、gmtime()、strftime()。
例:求一个月前的时间点
如:
‘2018-02-27’的一个月前的时间点为:‘2018-01-28’。
import time
a = time.strptime('2018-02-27', "%Y-%m-%d")#转换成时间数组
print(type(a))
b = time.mktime(a)#按格林尼治时间转换成时间戳
print(type(b))
t = b-30*24*3600+8*3600#北京时间要比格林尼治时间早八小时,所以加上8*3600
c = time.gmtime(t)#再转换成时间数组
print(type(c))
d = time.strftime("%Y-%m-%d", c)#转换成字符串
print(d)
#求本地时间
time.time()是格林尼治时间下的时间戳。
#可以用time.localtime()把时间戳转换成时间数组,并且考虑了时区问题。
In[10]: time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
Out[10]: '2018-04-11 10:55:26'
In[11]: time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(time.time()))
Out[11]: '2018-04-11 02:56:33'
#这是按格林尼治的时间转换的,相差八小时。
结果如下:
<class 'time.struct_time'>
<class 'float'>
<class 'time.struct_time'>
2018-01-28
datetime模块
datetime和字符串的转换
把字符串转成datetime
from datetime import datetime, timedelta
s = '2018-04-02 15:41:00'
t1 = datetime.strptime(s, '%Y-%m-%d %H:%M:%S')#把字符串转换成datetime对象
t2 = datetime.now()#现在的时间
print(t1)
print(t1.date())#取日期部分
print(t2)
t = (t2.date()-t1.date()).days#计算两个日期相差的天数
print(t)
结果:
2018-04-02 15:41:00
2018-04-02
2018-04-03 15:46:36.192150
1
把datetime转成字符串
datetime.datetime.strptime(st, '%Y-%m-%d %H:%M:%S')
datetime.timedelta
from datetime import datetime, timedelta
d1 = datetime.now()
d2 = d1 + timedelta(days = 7)#相差7天,也可以用参数hours
t = datetime.strftime(d2, '%Y-%m-%d %H:%M:%S')
print('一周后的日期是:', t)
格式为.000Z的时间字符应该如何转换成常见的时间格式?
有时我们会遇到类似于’2018-04-08T06:43:27.000Z’的时间对象,如何转换成常见的时间格式呢?这里的‘000Z’是UTC 通用标准时。
代码如下:
from datetime import datetime
from datetime import timedelta
t = '2018-04-08T06:43:27.000Z'
t_1 = datetime.strptime(t, "%Y-%m-%dT%H:%M:%S.%fZ" )#转换成datetime对象,注意时间格式
t_2 = t_1 + timedelta(hours=8)#转换成北京时间。据我猜测,000Z是世界协调时间,和北京时间相差8小时
t_3 = datetime.strftime(t_2, "%Y-%m-%d %H:%M:%S")#再转换成字符串
print(t_1,type(t_1))
print(t_2, type(t_2))
print(t_3, type(t_3))
#结果
'''
2018-04-08 06:43:27 <class 'datetime.datetime'>
2018-04-08 14:43:27 <class 'datetime.datetime'>
2018-04-08 14:43:27 <class 'str'>
'''
更多的内容,请参考下面这篇文章,非常详细。
参考文章
Python datetime模块详解、示例
How do you convert YYYY-MM-DDTHH:mm:ss.000Z time format to MM/DD/YYYY time format in Python?