什么是UTC?
UTC是世界同一时间(or世界标准时间)的意思,是英文 Coordinated Universal Time的简称。 是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。
什么是ISO-8601?
国际标准化组织的国际标准ISO 8601是日期和时间的表示方法。
ISO-8601中,日期和时间的组合表示法中要求:
合并表示时,要在时间前面加一大写字母T,如要表示北京时间2004年5月3日下午5点30分8秒,可以写成2004-05-03T17:30:08+08:00或20040503T173008+08。
time模块
time 模块中时间的表现格式主要有:
Timestamp(时间戳,可进行时间计算,以秒为单位)、struct_time(时间元组), Format string(格式化的时间)
timestamp:是时间戳,一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。
struct_time:是时间结构体,是一个时间元组包含了9个元素。
Format String:格式化后的时间
此外,Format String的时间日期格式化符号含义如下:
%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)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
time模块的常用函数:
(1)通过time.time()获得当前时间戳
(2)通过time.localtime(timestamp)、time.gmtime(timestamp),将时间戳转换成时间元组
(3)通过time.mktime(p_tuple), 将时间元组转换成时间戳
(4)通过time.strftime(format,p_tuple), 将时间元组格式化成string类型
(5)通过time.strptime(string,format), 将字符串转化为时间元组
(6)通过time.asctime(p_tuple) 函数接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
(7)通过time.ctime()获取当前时间,是易读的字符串格式,如:Mon Apr 29 08:21:53 2019
(8)通过time sleep(secs) 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间
(9)通过时间戳来对时间进行计算,时间戳的加减,是以秒为单位的
time模块的相关实例:
import time
'''通过time.time()获得时间戳'''
a=time.time() #通过time.time()获取的是时间戳,时间戳单位最适于做日期运算
print(a) #输出了时间戳,1556419498.246484
'''通过time.localtime(timestamp)、time.gmtime(timestamp),将时间戳转换成时间元组'''
localtime=time.localtime(time.time()) #通过time.localtime获取当前时间的时间元组
print(localtime) #输出时间元组:time.struct_time(tm_year=2019, tm_mon=4, tm_mday=28, tm_hour=10, tm_min=39, tm_sec=50, tm_wday=6, tm_yday=118, tm_isdst=0)
gmtime=time.gmtime(time.time()) #通过time.gmtime函数将一个时间戳转换为UTC时区(0时区)的struct_time
print(gmtime) #输出了0时区的时间元组:time.struct_time(tm_year=2019, tm_mon=4, tm_mday=28, tm_hour=2, tm_min=44, tm_sec=58, tm_wday=6, tm_yday=118, tm_isdst=0)
'''通过time.mktime(p_tuple), 将时间元组转换成时间戳'''
mktime1=time.mktime(localtime) #通过time.mktime将时间元组转化为时间戳
print(mktime1) #输出:1556422487.0
mktime2=time.mktime(gmtime) #通过time.mktime将时间元组转化为时间戳
print(mktime2) #输出: 1556393687.0
'''通过time.strftime(format,p_tuple), 将时间元组格式化成string类型'''
fs_time1=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())) #通过time.strftime(format,p_tuple)将时间元组格式化,第一个参数是格式,第二个参数是时间元组
print(fs_time1) #输出:2019-04-28 11:39:55
fs_time2=time.strftime("%Y-%m-%d",time.localtime(time.time()))
print(fs_time2) #输出:2019-04-28
'''通过time.strptime(string,format), 将字符串转化为时间元组'''
st_time1=time.strptime(fs_time1,'%Y-%m-%d %H:%M:%S') #通过time.strptime(string,format)将字符串转化成时间元组,第一个参数是字符串,第二个参数是格式
print(st_time1) #输出: time.struct_time(tm_year=2019, tm_mon=4, tm_mday=28, tm_hour=11, tm_min=50, tm_sec=25, tm_wday=6, tm_yday=118, tm_isdst=-1)
'''通过time.asctime(p_tuple) 函数接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。'''
a=time.asctime(st_time1)
print(a) #输出: Mon Apr 29 08:13:54 2019
'''通过time.ctime()获取当前时间,易读的字符串格式'''
b=time.ctime()
print(b) #输出:Mon Apr 29 08:21:53 2019 是str类型
'''通过time sleep(secs) 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。'''
c=time.sleep(3)
d=time.ctime()
print(d) #在输出b之后的30秒,再输出d,也就是 Mon Apr 29 08:25:57 2019
'''通过时间戳来对时间进行计算,时间戳的加减,是以秒为单位的'''
e=time.time()
print("当前时间是",time.ctime(e)) #输出:当前时间是 Mon Apr 29 08:38:44 2019
e1=e+10
print("增加10秒后的时间是:",time.ctime(e1)) #输出: 增加10秒后的时间是: Mon Apr 29 08:38:54 2019