在用Python处理数据时,可能有时候会需要将时间转换成时间戳,或者说将时间戳转换成时间,这里分享一下时间戳与时间的相互转换的方法。在Python里面处理时间相关问题,基本上用的包就是time和datetime两个,这里也是用这两个包实现时间戳和时间的相互转换。
时间戳转换成时间
python time strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。
strftime()方法语法:
time.strftime(format[, t]) #format -- 格式字符串。t -- 可选的参数t是一个struct_time对象。
Python time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组。
strptime()方法语法:
time.strptime(string[, format]) #string -- 时间字符串。 format -- 格式化字符串。
import time
date = '03/20/2020' #"2020年3月20日"
date1=time.strptime(date,'%m/%d/%Y') #%Y年%m月%d日
d2 = time.strftime("%Y-%m-%d",date1)
print(date1)
print(d2)
时间转换成时间戳
import datetime
import time
time1 = datetime.datetime(2020,3,17,6.8,8,8)
time= time.mktime(time1.timeuple())
datetime对象转换成字符串
-利用str或者strftime方法可以将datetime对象转换成字符串:
from datetime import datetime # 导入datetime模块
stamp = datetime(2018, 12, 6) # 生成一个datetime对象
str(stamp) # 转换 #结果显示:‘2018-12-06 00:00:00’
-使用strftime函数,需要传入一个格式化字符串:
stamp.strftime(’%Y-%m-%d’) # 结果显示:‘2018-12-06’
strftime虽然有些麻烦,但是用途很多,比如可以输出当前日期是星期几:
stamp.strftime("%w") # 结果显示:‘6’,表示当前日期为星期六
字符串转换成datetime对象
datetime.strptime可以用这些格式化编码将字符串转换成日期:
value = ‘2018-12-06’
datetime.strptime(value, ‘%Y/%m/%d’)
结果显示:
datetime.datetime(2018, 12, 6, 0, 0)
不同类型时间的转换
1.date: March 13, 2020
char ='\n Original release date: March 13, 2020\n'
com = re.compile(r':(\s*[\S]+\s\d+,\s\d+)') #( *[\s]+)
char3 = re.findall(com, char)
time2 = char3.replace(" |,", "")
print
# print()(time3)
time_format2 = time.time.strptime(time2, '%B%d%Y')
2.Wed, 25 Mar 2020 08:00:28 +0000
date1 = 'Wed, 25 Mar 2020 08:00:28 +0000'
date2 = time.strptime(date1,"%a, %d %b %Y %H:%M:%S +0000")
date3 = time.strftime("%Y-%m-%d",date2)
3.时间:2019-05-15\xa0\xa0\xa0\xa0
char = "时间:2019-05-15\xa0\xa0\xa0\xa0"
# com = re.compile(r'\d{4}-\d{2}-\d{2}') # date1 = re.compile(r'd{4}[-|/|.]\d{1,2}[-|/|.]\d{1,2}',date) #2020-2-23或者2020/2/23
# char3 = re.findall(com, char)
4.2020-03-20 19:50:38
date3 ='2020-03-20 19:50:38'
date4 = time.strptime(date3,"%Y-%m-%d %H:%M:%S")
date5 = time.strftime("%Y-%m-%d",date4)
5.2020-03-11T17:15:07+00:00
format1="%Y-%m-%dT%H:%M:%S+00:00"
format2="%Y-%m-%d %H:%M:%S"
t1 = '2020-03-11T17:15:07+00:00'
t = time.strptime(t1, format1)
t2 = time.strftime(format2, t)
print(t2)
6.Mar 14, 2020
time1 ='Mar 14, 2020'
time2 = time1.replace(" ", "")
time3 = time2.replace(",", "")
# print()(time3)
time_format2 = time.strptime(time3, '%b%d%Y')
item['time'] = time.strftime("%Y-%m-%d",time_format2)
7.Thursday, March 26, 2020
date = 'Thursday, March 26, 2020'
date2 = time.strptime(date, "%A, %B %d, %Y")
date3 = time.strftime("%Y-%m-%d", date2)
print(date3)
8.05月18, 2020
date='05月18, 2020'
time_format2 = time.strptime(date, '%m月%d, %Y')
date2 = time.strftime("%Y-%m-%d", time_format2)
2020-03-07T08:12:44.274Z
import time
joined = '2020-03-07T08:12:44.274Z'
data = time.strptime(joined,'%Y-%m-%dT%H:%M:%S.%fZ')
join_time = time.strftime("%Y-%m-%d",data)
print(join_time)
获取前一天时间
time1= ‘Mar 14, 2020 12:00:00 AM’
time2 = datetime.datetime.strptime(time1, '%b %d, %Y %H:%M:%S AM')
time3 = time2 - datetime.timedelta(days=1) #获取当前时间的前一天时间
timestamp = time3.strftime("%Y-%m-%d")
时间字段说明
python中时间日期格式化符号:
符号 | 含义 |
---|---|
%y | 两位数的年份表示(00-99) |
%Y | 四位数的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%I | 2小时制小时数(01-12) |
%M | 分钟数(00=59) |
%S | 秒(00-59) |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%j | 年内的一天(001-366) |
%p | 本地A.M.或P.M.的等价符 |
%U | 一年中的星期数(00-53)星期天为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 |
%W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%Z | 当前时区的名称 |
%% | %号本身 |