python成长之路【第六篇】:python模块--time和datetime

1、时间表现形式

时间戳  (1970年1月1日之后的秒,即:time.time())
格式化的时间字符串   (2014-11-11 11:11,    即:time.strftime('%Y-%m-%d'))
元组((struct_time)共九个元素  (元组包含了:年、日、星期等... time.struct_time    即:time.localtime())

注意:时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。返回时间戳方式的函数主要有time(),clock()等。

元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。

UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。DST(Daylight Saving Time)即夏令时。

2、time模块方法:help(time.time)

time.time() #获取时间戳,从1970-1-1 0:0:0到现在的秒数
time.sleep(2) #暂停2秒
time.gmtime() #时间戳转换为UTC时间,表现为元组形式
time.localtime() #时间戳转换为本地时间,表现为元组形式
time.mktime() #将元组形式的时间转换为时间戳
time.strftime("%Y-%m-%d %H:%M:%S",[,tuple]) #将元组形式的时间转化为格式化的字符串
        %Y == x.tm_year
time.strptime("2016-08-20 14:44:00","%Y-%m-%d %H:%M:%S") #将格式化的字符串转换为元组形式的时间
time.asctime() #将元组形式的时间转换为格式化的字符串
time.ctime() #将时间戳转换为格式化的字符串

  

转成元组(struct_time)形式:

#时间戳转换为元组形式的时间,如果()中没有值,则将当前时间戳转换为元组形式
print(time.localtime())
输出:
time.struct_time(tm_year=2016, tm_mon=8, tm_mday=21, tm_hour=17, tm_min=11, tm_sec=52, tm_wday=6, tm_yday=234, tm_isdst=0)

#日期字符串转成元组形式的时间
string_2_struct = time.strptime("2016/08/21","%Y/%m/%d")
print(string_2_struct)
输出:
time.struct_time(tm_year=2016, tm_mon=8, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=234, tm_isdst=-1)

注意:其实%Y == string_2_struct.tm_year,其他类似,这样我们也可以输出格式化后的字符串时间格式。
print("{year}-{month}-{day}".format(year=string_2_struct.tm_year,month=string_2_struct.tm_mon,day=string_2_struct.tm_mday))

转换成时间戳:

#将元组形式的时间转换成时间戳
print(time.mktime(time.localtime()))
输出:
1471771439.0

转换为时间的字符串格式:
#将元组形式的时间转换成字符串格式的时间,格式可自定义。
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
输出:
2016-08-21 17:28:03

#将元组形式的时间转换为字符串格式的时间,返回时间格式:"Sun Aug 21 17:39:17 2016"
print(time.asctime(time.localtime()))
输出:
Sun Aug 21 17:39:17 2016

#将时间戳转换为字符串格式的时间,返回时间格式:"Sun Aug 21 17:39:17 2016"
print(time.ctime())
输出:
Sun Aug 21 17:39:17 2016

字符串格式参照:
%a    本地(locale)简化星期名称    
%A    本地完整星期名称    
%b    本地简化月份名称    
%B    本地完整月份名称    
%c    本地相应的日期和时间表示    
%d    一个月中的第几天(01 - 31)    
%H    一天中的第几个小时(24小时制,00 - 23)    
%I    第几个小时(12小时制,01 - 12)    
%j    一年中的第几天(001 - 366)    
%m    月份(01 - 12)    
%M    分钟数(00 - 59)    
%p    本地am或者pm的相应符   
%S    秒(01 - 61)   
%U    一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。      
%w    一个星期中的第几天(0 - 6,0是星期天)    
%W    和%U基本相同,不同的是%W以星期一为一个星期的开始。    
%x    本地相应日期    
%X    本地相应时间    
%y    去掉世纪的年份(00 - 99)    
%Y    完整的年份    
%Z    时区的名字(如果不存在为空字符)    
%%    ‘%’字符

  

各个时间表现形式之间的逻辑图,如下:

3、时间模块datetime

import datetime
print(datetime.datetime.now()) #返回 2016-08-21 17:48:55.171126
print(datetime.date.fromtimestamp(time.time())) #返回2016-08-21
print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分钟

#时间替换
c_time = datetime.datetime.now()
print(c_time.replace(hour=2,minute=3)) #将c_time中的hour替换为2
输出:
2016-08-21 02:03:30.526171

原文地址:https://www.cnblogs.com/wooya/p/5809032.html