利用业余时间整理了一下python中关于时间的转换操作。
python中有3中类型:time、date、datetime。类型转换时要借助strftime、strptime方法来进行时间和字符串的转化。
1、下面简单介绍一下:
- date 的属性只有 strftime;datetime 的属性有 strftime、strptime
- time 的属性也有 strftime、strptime。但是 time.strptime 得出的时间类型是 struct_time 类型,需要 mktime 来转换,转换结果是 float 类型的时间戳;转换为 str 时间时,也要用 time 来调用 strftime
- strftime 中时间参数,也可以用 struct_time 格式的内容。例:time.strftime ("时间格式",struct_time 格式的表达式)。注意:这里只可以用 time,如果用datetime.strftime 或date.strftime 会报错,因为后两者没有对应的方法。
- datetime 类型的时间,才可以适用 timestamp 转化为时间戳;date 类型不可以time.localtime([ sec ]):
- time localtime() 函数类似 gmtime(),作用是格式化时间戳为本地的时间。 如果sec参数未输入,则以当前时间为转换标准。
- sec -- 转换为 time.struct_time 类型的对象的秒数。
- strftime:str 表示字符串,f 是 format,time 是时间,就是时间格式化为字符串
- strptime:str 表示字符串,p 是 parse,time 是时间,就是字符串解析为时间
- time.ctime() 与 time.gmtime() 时间不一致:time.ctime() 是北京时间,time.gmtime() 是格林尼治时间(英国的标准时间),两者有8小时的时差(格林尼治比北京晚8小时)
-
用 “time.localtime(时间戳(s)) -> struct_time” 处理完时间戳后,可以用 time.strftime() 转换成各种样式
2、struct_time类型的结构:
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=27, tm_hour=10, tm_min=26, tm_sec=5, tm_wday=6, tm_yday=332, tm_isdst=0)
字段解析:
int tm_sec; /* 秒 – 取值区间为[0,59] */
int tm_min; /* 分 - 取值区间为[0,59] */
int tm_hour; /* 时 - 取值区间为[0,23] */
int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期一,1代表星期二,以此类推 */
int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正;不实行夏令时的时候,tm_isdst为0;不了解情况时,tm_isdst()为负。
3、time、datetime、时间戳的转换
(圆矩形框上的蓝色标注是下面的语句输出的type类型)