因为测试需要,最近2天重新整理了一遍从ftp下载原始数据文件及分析数据的脚本,发现对时间方面的处理不是很顺畅,查了不少资料及API文档
在python中关于时间处理主要用到2个模块,即datetime、time库。补充一点: 学习一个库,直接查看API文档是最快捷的方式,即 python3 -m pydoc -b
-
time
- time(),返回从1970年1月1日至今的秒数,浮点类型
- gmtime(),将秒数转化成utc 时间的元组,参数可默认,可指定,默认传入的秒数为当前时间的秒数,转化后的元组格式如:
time.struct_time(tm_year=2017, tm_mon=7, tm_mday=19, tm_hour=7, tm_min=35, tm_sec=2, tm_wday=2, tm_yday=200, tm_isdst=0)
- localtime(),将秒数转化成当前位置时区的时间元组,参数可默认,可指定,默认是返回当前时间的时间元组。用法类似
gmtime()
,区别为返回的元组,localtime()
返回当前位置时区的时间元组,加上了时区,gmtime()
为utc时间元组,即0时区 - asctime(),将时间元组转化成字符串类型,参数默认是当前时间,可指定,返回结果格式类似
Wed Jul 19 15:46:13 2017
- mktime(),将时间元组转化成秒数,需指定参数,返回结果为浮点类型
- strftime(format[, [tuple])将时间元组转化成指定格式的字符串,格式说明见后面的附录
- strptime(string, format)将时间字符串按照指定格式转化成时间元组,约束了输入的时间格式
**综上所述: **
产生时间元组的方法:gmtime()
、localtime()
、strptime()
产生秒数(此处为浮点型)的方法:time()
、mktime()
将时间用字符串格式表示的方法:strftime()
、asctime()
示例:
将指定时间字符串转化成utc时间
import time
def getUTCTime(ptime):#输入的时间格式要求:'%Y/%m/%d %H:%M'
time_tuple=time.strptime(ptime,'%Y/%m/%d %H:%M')
seconds=time.mktime(time_tuple)
utc_tuple=time.gmtime(seconds)
formattime=time.strftime("%Y-%m-%d %H:%M",utc_tuple)
print(time_tuple)
print(seconds)
print(utc_tuple)
print(formattime)
getUTCTime("2017/12/2 23:55")
#结果
time.struct_time(tm_year=2017, tm_mon=12, tm_mday=2, tm_hour=23, tm_min=55, tm_sec=0, tm_wday=5, tm_yday=336, tm_isdst=-1)
1512230100.0
time.struct_time(tm_year=2017, tm_mon=12, tm_mday=2, tm_hour=15, tm_min=55, tm_sec=0, tm_wday=5, tm_yday=336, tm_isdst=0)
2017-12-02 15:55
附录:
转化格式说明,直接摘录了一篇博客,便于后续使用时再去查找,这里写得比API文档更为详细,感谢!同时附上博客地址:http://blog.csdn.net/chuan_day/article/details/73692278
%a 本地星期的短名称 如:Sun, Mon, ..., Sat (en_US); So, Mo, ..., Sa (de_DE)
%A 本地星期全名称 如 :Sunday, Monday, ..., Saturday (en_US);Sonntag, Montag, ..., Samstag (de_DE)
%w 星期的数字表示,0表示周日,6表示周六 如:0,1,2,,,6
%d 日的数字表示,并且使用0来填补(0-9),如:01, 02, ..., 31
%b 月份的短名称显示,英文单词简写,如:Jan, Feb, ..., Dec (en_US);Jan, Feb, ..., Dez (de_DE)
%B 月份的全名称显示,如:January, February, ..., December (en_US);Januar, Februar, ..., Dezember (de_DE)
%m 月份数字显示,并且用0来补全,如:01, 02, ..., 12
%y 年份的数字表示,两位表示,如:00, 01, ..., 99
%Y 年份的数字表示,四位表示,如:0001, 0002, ..., 2013, 2014, ..., 9998, 9999
%H 24小时制表示,如:00, 01, ..., 23
%I 12小时制表示,如:01, 02, ..., 12
%p 上下午的表示,如:AM,PM
%M 分钟,并且用0补全(0-9),如:00, 01, ..., 59
%S 秒钟,并且用0补全(0-9),如:00, 01, ..., 59
%f 微妙表示,如:000000, 000001, ..., 999999
%z 时区偏移量,如:(empty), +0000, -0400, +1030
%Z 时区名称,如:(empty), UTC, EST, CST
%j 全年中的哪一个,用0补全,如:001, 002, ..., 366
%U 全年中的第几个星期,sunday为第一天如:00, 01, ..., 53
%W 全年中的第几个星期,monday为第一天如:00, 01, ..., 53
%c 本地时间,如:06/24/17 15:43:10
%x 本地日期,如:08/16/88 (None);
%X 本地时间,如:21:30:00 (en_US);
%% %符号