Python学海无涯路【第23回】:time模块

本文深入讲解了时间处理的三大表示形式:时间戳、struct_time元组及格式化时间字符串,并对比了格林尼治标准时间(GMT)与协调世界时(UTC)的差异,详细介绍了Python中时间处理的相关函数,如时间戳的生成与转换、struct_time的获取与格式化,以及时间格式化的符号说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1、时间的三种表示形式

  • 时间戳(timestamp)
  • 元组(struct_time)
  • 格式化的时间字符串

2、格林尼治和格林威治

格林尼治和格林威治都是Greenwich的音译叫法。
前中国地名委员会办公室与中国地图出版社译名组、新华社译名室共同商议,为促进汉译外国地名以及外来科技术语的标准化、规范化,决定将Greenwich改译为“格林尼治”,舍弃“格林威治”的译法,与天文学界的译名相一致。

3、GMT和UTC

3.1、GMT格林尼治标准时间

  • GMT(Greenwich Mean Time)——格林尼治标准时间
  • 理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治时)的时间。

3.2、UTC协调世界时

  • UTC(Universal TimeCoordinated)——协调世界时
    又称世界统一时间、世界标准时间、国际协调时间。
  • UTC 这几个字母是英文Coordinated Universal Time 和法语Temp UniverselleCoordinee 的混合体。
  • 协调世界时是以原子时秒长为基础在时刻上尽量接近于世界时(UT)的一种时间计量系统,国际原子时的准确度为每日数纳秒,而世界时的准确度为每日数毫秒。协调世界时(UTC)是一种折衷时标,以使时间系统接近于世界时,1972年面世。协调世界时属于“原子物理时间”,它更加精确,基本不会产生误差。

3.3、使用GMT还是UTC

为了方便,在不需要精确到秒的情况下,通常也将GMT 和UTC 视作等同。

4、时间戳

时间戳表示的是从1970年1月1日开始按秒计算的偏移量。
例:

import time
print(time.time())	#返回当前时间的时间戳

输出:
1561729665.5359492

4.1、struct_time转化为时间戳

4.1.1、mktime

将一个struct_time转化为时间戳。
例:

import time
t=time.localtime()
print(time.mktime(t))

输出:
1561733693.0

5、元组(struct_time)

struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

5.1、时间戳转换为struct_time

5.1.1、localtime

  • 将一个时间戳转换为当前时区的struct_time
  • 不提供参数, 则以当前时间为准
    例:
import time
#默认获得本时区的struct_time
print(time.localtime())             
print(time.localtime(time.time()))

输出:
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=28, tm_hour=21, tm_min=58, tm_sec=16, tm_wday=4, tm_yday=179, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=28, tm_hour=21, tm_min=58, tm_sec=16, tm_wday=4, tm_yday=179, tm_isdst=0)

5.1.2、gmtime

  • 将一个时间戳转换为GMT时区(0时区)的struct_time
    例:
import time
#默认获得本GMT,0时区的struct_time
print(time.gmtime())                
print(time.gmtime(time.time()))

输出:
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=28, tm_hour=13, tm_min=58, tm_sec=16, tm_wday=4, tm_yday=179, tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=28, tm_hour=13, tm_min=58, tm_sec=16, tm_wday=4, tm_yday=179, tm_isdst=0)

5.1.3、localtime和gmtime的区别

  • locatime是本时区的时间
  • gmtime是0时区的时间
    例:
import time
print(time.strftime("%Y-%m-%d %X",time.localtime(0)))
print(time.strftime("%Y-%m-%d %X",time.gmtime(0)))

输出:
1970-01-01 08:00:00
1970-01-01 00:00:00
注:中国在东八区,与0时区相差8小时

5.2、将格式化字符串转换为struct_time

5.2.1、strptime

  • 把一个格式化时间字符串转化为struct_time。
  • 和strftime()是逆操作
    例:
import time
print(time.strptime("2019-06-28 23:08:33","%Y-%m-%d %X"))

输出:
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=28, tm_hour=23, tm_min=8, tm_sec=33, tm_wday=4, tm_yday=179, tm_isdst=-1)

6、格式化的时间

6.1、将时间戳转化为格式化的时间

6.1.1、ctime

  • 把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。
  • 如果参数未给或者为None的时候,将会默认time.time()为参数
    例:
import time
print(time.ctime())

输出:
Fri Jun 28 22:34:22 2019

6.2、将struct_time转化为格式化的时间

6.2.1、asctime

  • 把一个表示时间的元组或者struct_time表示为这种形式:Fri Jun 28 22:28:33 2019
  • 如果没有参数,将会将time.localtime()作为参数传入
    例:
import time
print(time.asctime())

输出:
Fri Jun 28 22:28:33 2019

6.2.2、strftime

  • 把一个代表时间的元组或struct_time转化为格式化的时间字符串
  • 如果元组中任何一个元素越界,ValueError的错误将会被抛出。
    例:
import time
print(time.strftime("%Y-%m-%d %X",time.localtime()))

输出:
2019-06-28 23:08:33

6.3、格式化时间的符号

符号含义
%a本地的简写工作日名称。
%A本地的完整工作日名称。
%b本地简化的月份名称。
%B本地的完整月份名称。
%c本地相应的日期和时间表示。
%d一个十进制数字[01,31]。
%H小时(24小时制),24小时制,00-23。
%I小时(12小时制),12小时制,01-12。
%j一年中的十进制数[001,366]。
%m月为十进制数[01,12]。
%M以十进制数分钟[00,59]。
%p本地am或者pm的相应符。
%S秒为十进制数[00,61]。
%U年的星期数(星期日为星期的第一天)为十进制数[00,53]。在第一个星期日之前的新的一年的所有天被认为是在第0周。
%w工作日为十进制数[0(星期日),6]。
%W年的星期数(星期一作为星期的第一天)作为十进制数[00,53]。在第一个星期一之前的新的一年中的所有天被认为是在第0周。
%x语言环境的适当日期表示。
%X语言环境的适当时间表示。
%y年,无世纪作为十进制数[00,99]。
%Y年份以世纪为十进制数。
%z指示与+ HHMM或-HHMM形式的UTC / GMT的正或负时差的时区偏移,其中H表示十进制小时数字,M表示十进制分数字[-23:59,+23:59]。
%Z时区名称(如果没有时区,则不包含字符)。
%%字面值’%'字符。
  • %p只有与%I配合使用才有效果
  • 当使用strptime()函数时,只有当在这年中的周数和天数被确定的时候%U和%W才会被计算

6.4、格式化时间的符号

7、其它函数

7.1、sleep

  • 系统延迟指定的时间再运行
  • 单位为秒
    例:
import time
print(time.strftime("%X",time.localtime()))
time.sleep(3)		#延迟3秒
print(time.strftime("%X",time.localtime()))

输出:
23:20:17
23:20:20

7.2、clock

  • 在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)
  • 在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间,即两次时间差。

8、格式相互转换关系图

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值