time模块
时间的表示方法有三种:
- 时间戳:表示的是从1970年1月1日0点至今的秒数
- 格式化字符串表示:这种表示更习惯我们通常的读法,如2018-04-24 00:00:00
- 格式化元祖表示:是一个具有九个元素的元祖
时间戳与格式元组的互相转换
import time #导入time模块 d = time.time() # 显示当前的时间戳 d Out[16]: 1524570062.944023 time.localtime(d) #把时间戳转换为含9个元素的元组,转换为当地时间 Out[17]: time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=19, tm_min=41, tm_sec=2, tm_wday=1, tm_yday=114, tm_isdst=0) time.gmtime(d) #把时间戳转换为含9个元素的元组,转换为UTC时间 Out[18]: time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=11, tm_min=41, tm_sec=2, tm_wday=1, tm_yday=114, tm_isdst=0) ld = time.localtime(d) # ld.tm_year #转换的元组,可以根据需要单独计算对应的时间 Out[20]: 2018 time.mktime(ld) # 把元组在转换回时间戳 Out[21]: 1524570062.0
备注:UTC时间为格林威治时间,比东八区晚8个小时!
时间戳与格式化字符串的转换:
时间戳-------->格式化元组---------->格式化字符串
help(time.strftime) Help on built-in function strftime in module time: strftime(...) strftime(format[, tuple]) -> string #函数的格式使用 Convert a time tuple to a string according to a format specification. See the library reference manual for formatting codes. When the time tuple is not present, current time as returned by localtime() is used. Commonly used format codes: %Y Year with century as a decimal number. %m Month as a decimal number [01,12]. %d Day of the month as a decimal number [01,31]. %H Hour (24-hour clock) as a decimal number [00,23]. %M Minute as a decimal number [00,59]. %S Second as a decimal number [00,61]. %z Time zone offset from UTC. %a Locale's abbreviated weekday name. %A Locale's full weekday name. %b Locale's abbreviated month name. %B Locale's full month name. %c Locale's appropriate date and time representation. %I Hour (12-hour clock) as a decimal number [01,12]. %p Locale's equivalent of either AM or PM. Other codes may be available on your platform. See documentation for the C library strftime function.
ld #格式化元组的数据 Out[22]: time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=19, tm_min=41, tm_sec=2, tm_wday=1, tm_yday=114, tm_isdst=0) time.strftime("%Y-%m-%d %H:%M:%S", ld) Out[25]: '2018-04-24 19:41:02' time.strftime("%Y-%m-%d %X", ld) Out[26]: '2018-04-24 19:41:02' time.strftime("%Y-%m-%d %X %p", ld) #时间戳转换为格式化元组 Out[27]: '2018-04-24 19:41:02 PM' #字符串转换为格式化元组,注意格式对应 time.strptime('2018-04-24 19:41:02 PM',"%Y-%m-%d %H:%M:%S %p") Out[32]: time.struct_time(tm_year=2018, tm_mon=4, tm_mday=24, tm_hour=19, tm_min=41, tm_sec=2, tm_wday=1, tm_yday=114, tm_isdst=-1)
根据时间戳转换为字符格式
help(time.ctime) Help on built-in function ctime in module time: ctime(...) ctime(seconds) -> string Convert a time in seconds since the Epoch to a string in local time. This is equivalent to asctime(localtime(seconds)). When the time tuple is not present, current time as returned by localtime() is used. time.ctime(time.time()) Out[34]: 'Tue Apr 24 20:02:46 2018'
根据struct_time格式的元组转换为字符串
help(time.asctime) Help on built-in function asctime in module time: asctime(...) asctime([tuple]) -> string Convert a time tuple to a string, e.g. 'Sat Jun 06 16:26:11 1998'. When the time tuple is not present, current time as returned by localtime() is used. time.asctime(ld) Out[36]: 'Tue Apr 24 19:41:02 2018'
datetime模块
dateimte模块对time模块进行了封装,提供了更多功能的接口:
在csdn上看到一个博客,讲的蛮详细的,博主禁止转载,因此附上链接。datetime模块