时间的3中表示格式,以及之间的互转:
在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:
(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
(2)格式化的时间字符串(Format String): ‘2018-04-18’
(3)元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
用处:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
转化:
1.时间戳-->格式化-->字符串
_now = time.time() # 时间戳
struct_time = time.localtime(_now) # 时间戳转化成格式化的时间
time.strftime("%Y-%m-%d %X", struct_time) # 2018-04-21 22:44:53
1.字符串-->格式化-->时间戳
str_time = '2018-04-18 08:00:00'
struct_time2 = time.strptime(str_time,'%Y-%m-%d %H:%M:%S') # 字符串转格式化
timestamp = time.mktime(struct_time2) # 格式化转时间戳
# =======以上是time模块,下边是datetime模块===========================
import datetime
# 1.时间戳 --> 格式化--> 字符型
timestamp1 = 1509636585.0 # 2018-04-21 23:47:02.886948
# 时间戳转化为格式化(datetime类型)时间
struct_time = datetime.datetime.fromtimestamp(1509636585.0) # 类型:<class 'datetime.datetime'>
# 格式化转化为字符串类型
str_time = datetime.datetime.strftime(struct_time,'%Y-%m-%d %H:%M:%S') # 2017-11-02 23:29:45
# 2.字符型 -->格式化 --> 时间戳
str_time1 = '2017-11-02 23:29:45'
# 字符串-->格式化
struct_time = datetime.datetime.strptime(str_time1,'%Y-%m-%d %H:%M:%S')
# 格式化-->时间戳
time_stamp = time.mktime(struct_time.timetuple()) # 1509636585.0
时间之间的计算
# 时间之间的间隔
# 1.时间延迟、提前的计算
now =datetime.datetime.now()
# 明天这时候
tomorrow_now = now + datetime.timedelta(days=1)
# 昨天这时候
yes_now = now + datetime.timedelta(days=-1)
# 2.两个时间的差值
days = (tomorrow_now - yes_now).days # 2
# 1.时间延迟、提前的计算
now =datetime.datetime.now()
# 明天这时候
tomorrow_now = now + datetime.timedelta(days=1)
# 昨天这时候
yes_now = now + datetime.timedelta(days=-1)
# 2.两个时间的差值
days = (tomorrow_now - yes_now).days # 2