Python 之 time 模块的 time() 函数生成一组格式为 10 位数的浮点数被称之为时间戳,它是从格林威治时间 1970年1月1日 00:00:00 起至此时过去的总秒数。
1、调用time()的方法
模块名.函数名:time.time()
import time,random
def P(s, c=''): # 打印值和值的类型的自定义函数,参数 s 为打印的值,参数 c 为值的说明文字(默认为空)
return print('{}\n值为:{}\n类型为:{}\n'.format(('' if c == '' else '\n'+c),s,type(s)))
# 取系统当前时间戳
time0 = time.time()
P(time0)
输出结果如下:
值为:1656081341.2252388
类型为:<class ‘float’>
附上 time 库几个常用函数和例子:
time.strptime():将特定字符串格式的时间,转换为struct_time
time.strftime():将struct_time,转换为特定字符串格式的时间
time.time():将当前时间转换为时间戳
time.mktime():将struct_time转换为时间戳,输入当地struct_time,输出格林威治时间戳
time.localtime():将时间戳转换为struct_time(当地时间)
time.gmtime():将时间戳转换为struct_time(格林威治时间)
localtime 与 gmtime 两者关系:例如,localtime 在东八区的北京时间 + 8小时(时间戳加上 8×60×60 = 28800 秒)= gmtime 在中时区的格林威治时间,换言之:格林威治时间比北京时间晚 8 个小时。
例子:
取当地日期时间 current_time 的语句为:time.localtime()
值为:struct_time(tm_year=2022, tm_mon=6, tm_mday=26, tm_hour=22, tm_min=5, tm_sec=10, tm_wday=6, tm_yday=177, tm_isdst=0)
类型为:<class ‘struct_time’>
将 current_time 转换为字符串型 date 标准格式公历日期时间的语句为:time.strftime(“%Y-%m-%d %H:%M:%S”, current_time)
值为:2022-06-26 22:05:10
类型为:<class ‘str’>
将 date 转换为 timestamp 格林威治时间戳的语句为:time.time(time.strptime(date,“%Y-%m-%d %H:%M:%S”))
值为:1656252310.0
类型为:<class ‘float’>
将 timestamp 加 12 小时转换为字符串型标准格式【格林威治】公历日期时间的语句为:time.strftime(‘%Y-%m-%d %H:%M:%S’, time.gmtime(timestamp + 12×60×60))
值为:2022-06-27 02:05:10
类型为:<class ‘str’>
将 timestamp 加 12 小时转换为字符串型标准格式【当地】公历日期时间的语句为:time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime(timestamp + 12×60×60))
值为:2022-06-27 10:05:10
类型为:<class ‘str’>
如何将 date = ‘【20220203^120356】’ 等式右边数据转换为标准日期时间格式?
先转为时间戳,语句是:timestamp = time.mktime(time.strptime(date,“【%Y%m%d^%H%M%S】”))
值为:1643862236.0
类型为:<class ‘float’>
再转为标准日期时间格式,语句是:date = time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime(timestamp))
值为:2022-02-03 12:03:56
类型为:<class ‘str’>
2、通常前后两个时间戳之差是秒数之差
采用默认的10位数字时间戳单位是秒,前后两个时间戳之差是秒数之差。有人为了增加计算的精度,将时间戳扩大1000倍,以毫秒为单位计数,此时间戳变为13位数字。需要强调的“秒”转换为“毫秒”是1000倍,千万别想当然记成“分”转换“秒”的60倍,如果采用13位数字时间戳,前后两个时间戳之差就是毫秒数之差。当然,也可以通过类型变换,变成小时数之差(见本文第3条)。
# 随机延长1-10秒
time.sleep(random.uniform(1-10秒))
time1 = time.time()
t = time1-time0
P(t)
输出结果如下:
值为:5.554218292236328
类型为:<class ‘float’>
3、将时间戳之差变成标准的【小时:分】(H:M)格式的方法
【小时】取值采用 t 值除以3600取整得到,【分】取值采用 t 值除以60再用60进行模运算取整得到。最后,采用 2 位右对齐空位填 0 即 {:0>2} 得到工整的输出格式。
# 为了显示【小时:分】格式,将前边的时间戳之差 t 放大3600倍,由秒差变为小时差
t = t*60*60
P('标准时间格式:{:0>2}:{:0>2}'.format(int(t/3600),int(t/60%60)))
输出结果如下:
标准时间格式:05:33
类型为:<class ‘str’>
希望以上分享对您有启发或帮助。