time 模块处理时间数据格式的几种方式

time 模块中处理时间数据格式的几种方式

在 time 模块中,时间数据主要有三种格式:时间戳(timeStamp)、时间数组(timeStruct)和时间字符串(timeStr)。形式如下图所示:
在这里插入图片描述
对于这三种格式的数据,时间戳与时间数组之间可以互相转换,时间数组和时间字符串之间可以互相转换,于是以时间数组为媒介,时间戳与时间字符串之间也可以互相转换。下面对这些转换进行具体说明。

1. 基本方法

timeStamp  = time.time()            # 获取当前时间的时间戳
timeStruct = time.localtime()       # 获取当前时间的时间数组
timeStamp = time.mktime(timeStruct)     # 时间数组转为时间戳
timeStruct = time.localtime(timeStamp)  # 时间戳转为时间数组
timeStr = time.asctime(timeStruct)      # 时间数组转为英文格式的时间字符串
timeStr = time.strftime("%Y-%m-%d",timeStruct)    # 时间数组转为其它指定格式的时间字符串  (time from str)
timeStruct = time.strptime(timeStr,"%Y-%m-%d")    # 时间字符串转为时间数组 (str parse to time)

为了方便记忆,strftime()可以理解为 “time from str”,strptime()可以理解为 “str parsed to time”。

2. 常用的时间日期格式化符号

%y   # 两位数的年份表示(00-99)
%Y   # 四位数的年份表示(000-9999)
%m   # 月份(01-12)
%d   # 月内中的一天(0-31)
%H   # 24小时制小时数(0-23)
%I   # 12小时制小时数(01-12) 
%M   # 分钟数(00=59)
%S   # 秒(00-59)

3. 三种格式间的相互转换

import time
# 1. 时间字符串1->时间数组1->时间戳->时间数组2->时间字符串2
timeStr1 = '2018-11-29'                              # 时间字符串1
timeStruct1 = time.strptime(t, "%Y-%m-%d %H:%M:%S")  # 时间数组1,由时间字符串1转换得到
timeStamp = time.mktime(timeStruct1)                 # 时间数组转为时间戳
timeStruct2 = time.localtime(timeStamp)              # 时间数组2,由时间戳转换得到
timeStr2 = time.strftime("%Y/%m/%d",timeStruct2)     # 另一格式的时间字符串,由时间数组2转换得到 

# 2. 时间戳1->时间数组1->时间字符串->时间数组2->时间戳2
timeStamp1 = 1543461759                                   # 时间戳1
timeStruct1 = time.localtime(timeStamp1)                  # 时间数组1,由时间戳转换得到
timeStr = time.strftime("%Y-%m-%d %H:%M:%S", timeStruct1) # 指定格式的时间字符串,由时间数组转换得到
timeStruct2 = time.strptime(timeStr,"%Y-%m-%d")           # 时间数组2,由时间字符串转换得到
timeStamp2 = time.mktime(timeStruct2)                     # 时间戳2,由时间数组转换得到

4. 时间字符串的格式化

在我们的日常工作中经常会遇到时间字符串,这就涉及到时间字符串的格式化问题。下面给出时间字符串 '2018-11-29''2018/11/29' 的转换方法:

import time
timeStr = '2018-11-29'
timeStruct = time.strptime('2018-11-29', "%Y-%m-%d")
timeStr = time.strftime("%Y/%m/%d", timeStruct)

结果为:
在这里插入图片描述
需要注意的是,在timeStruct = time.strptime('2018-11-29', "%Y-%m-%d")这行代码中,参数"%Y-%m-%d"需要根据'2018-11-29'的格式来定,如果时间字符串的格式为'2018/11/29',那么这个参数应该改为"%Y/%m/%d"

猜你喜欢

转载自blog.csdn.net/weixin_42902669/article/details/84622830