时间与时间戳的转换(Python)
首先,什么是时间戳?
- 时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。它也被称为Unix时间戳(Unix Timestamp)。
- 百度百科对时间戳的定义是,一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。
在python中,时间戳是一串数字,当我们要把它转换为具有一定格式的时间数据如 ‘2018-08-08 11:11:11’ 时,需要用到time模块。同样,时间数据也可以转换为时间戳。
具体操作有如下几种:
- 将时间转换为时间戳
- 重新格式化时间
- 时间戳转换为时间
- 获取当前时间及将其转换成时间戳(实际需求)
1、将时间转换成时间戳
将时间数据2018-08-08 11:11:11转换成时间戳,
具体的操作过程为:
- 利用strptime()函数将时间转换成时间数组!!
- 利用mktime()函数将时间数组转换成时间戳!!
import time
dt = '2018-08-08 11:11:11'
# 将时间转换成时间数组
timeArray = time.strptime(dt, "%Y-%m-%d %H:%M:%S")
print(timeArray) # time.struct_time(tm_year=2018, tm_mon=8, tm_mday=8, tm_hour=11, tm_min=11, tm_sec=11, tm_wday=2, tm_yday=220, tm_isdst=-1)
print(timeArray[0]) # 2018
# 将时间数组转换成时间戳
timestamp = time.mktime(timeArray)
print(timestamp) # 1533697871.0
2、重新格式化时间
重新格式化时间需要以下的两个步骤:
- 利用strptime()函数将时间转换成时间数组
- 利用strftime()函数重新格式化时间
import time
dt = '2018-08-08 11:11:11'
# 利用strptime()函数将时间转换成时间数组
timeArray = time.strptime(dt, '%Y-%m-%d %H:%M:%S')
# 利用strftime()函数重新格式化时间
dt_new = time.strftime('%Y-%m-%d - %H:%M:%S',timeArray)
print(dt_new) # 2018-08-08 - 11:11:11
3、将时间戳转换成时间
在时间戳转换成时间中,首先需要将时间戳转换成localtime,再转换成时间的具体格式:
- 利用localtime()函数将时间戳转化成localtime的格式
- 利用strftime()函数重新格式化时间
import time
timestamp = 1533697871.0
# 利用localtime()函数将时间戳转化成时间数组
localtime = time.localtime(timestamp)
print(localtime) # time.struct_time(tm_year=2018, tm_mon=8, tm_mday=8, tm_hour=11, tm_min=11, tm_sec=11, tm_wday=2, tm_yday=220, tm_isdst=0)
# 利用strftime()函数重新格式化时间
dt = time.strftime('%Y:%m:%d %H:%M:%S',localtime)
print(dt) # 2018:08:08 11:11:11
4、按指定的格式获取当前时间!!☆重点掌握
基本步骤:
- 利用time()获取当前时间,
- 再利用localtime()函数转换为localtime(本地)时间数组,
- 最后利用strftime()函数重新格式化时间。
import time
# 获取当前时间
current_time = int(time.time())
print(current_time) # 1537873862
# 转换为localtime
localtime = time.localtime(current_time)
# 利用strftime()函数重新格式化时间
dt = time.strftime('%Y:%m:%d %H:%M:%S', localtime)
print(dt) # 返回当前时间:2018:09:25 19:14:34