如何学习Python time模块

time 模块主要包含各种提供日期、时间功能的类和函数。该模块既提供了把日期、时间格式化为字符串的功能,也提供了从字符串恢复日期、时间的功能。

在 Python 的交互式解释器中先导入 time 模块,然后输入 [e for e in dir(time) if not e.startswith('_')] 命令,即可看到该模块所包含的全部属性和函数:

>>> [e for e in dir(time) if not e.startswith('_')]
['altzone', 'asctime', 'clock', 'ctime', 'daylight', 'get_clock_info', 'gmtime', 'localtime', 'mktime',
'monotonic',
 'perf_counter', 'process_time', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname']

在 time 模块内提供了一个 time.struct_time 类,该类代表一个时间对象,它主要包含 9 个属性,每个属性的信息如下表所示:

表 1 time.struct_time 类中各属性的含义

表 1 time.struct_time 类中各属性的含义
字段名 字段含义
tm_year 如 2017、2018 等
tm_mon 如 2、3 等,范围为 1~12
tm_mday 如 2、3 等,范围为 1~31
tm_hour 如 2、3 等,范围为 0~23
tm_min 如 2、3 等,范围为 0~59
tm_sec  如 2、3 等,范围为 0~59
tm_wday 周一为 0,范围为 0~6
tm_yday  一年内第几天 如 65,范围 1~366
tm_isdst 夏时令 0、1 或 -1

比如,Python 可以用 time.struct_time(tm_year=2018, tm_mon=5, tm_mday=2, tm_hour=8, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1, tm_isdst=0) 很清晰地代表时间。

此外,Python 还可以用一个包含 9 个元素的元组来代表时间,该元组的 9 个元素和 struct_time 对象中 9 个属性的含义是一一对应的。比如程序可以使用(2018, 5, 2, 8, 0, 30, 3, 1, 0)来代表时间。

在日期、时间模块内常用的功能函数如下:

time.asctime([t]):将时间元组或 struct_time 转换为时间字符串。如果不指定参数 t,则默认转换当前时间。

time.ctime([secs]):将以秒数代表的时间转换为时间宇符串。

time.gmtime([secs]):将以秒数代表的时间转换为 struct_time 对象。如果不传入参数,则使用当前时间。

time.localtime([secs]):将以秒数代表的时间转换为代表当前时间的 struct_time 对象。如果不传入参数,则使用当前时间。

time.mktime(t):它是 localtime 的反转函数,用于将 struct_time 对象或元组代表的时间转换为从 1970 年 1 月 1 日 0 点整到现在过了多少秒。

time.perf_counter():返回性能计数器的值。以秒为单位。

time.process_time():返回当前进程使用 CPU 的时间。以秒为单位。

time.sleep(secs):暂停 secs 秒,什么都不干。

time.strftime(format[, t]):将时间元组或 struct_time 对象格式化为指定格式的时间字符串。如果不指定参数 t,则默认转换当前时间。

time.strptime(string[, format]):将字符串格式的时间解析成 struct_time 对象。

time.time():返回从 1970 年 1 月 1 日 0 点整到现在过了多少秒。

time.timezone:返回本地时区的时间偏移,以秒为单位。

time.tzname:返回本地时区的名字。

下面程序示范了 time 棋块的功能函数:

import time
# 将当前时间转换为时间字符串
print(time.asctime())
# 将指定时间转换时间字符串,时间元组的后面3个元素没有设置
print(time.asctime((2018, 2, 4, 11, 8, 23, 0, 0 ,0))) # Mon Feb 4 11:08:23 2018
# 将以秒数为代表的时间转换为时间字符串
print(time.ctime(30)) # Thu Jan 1 08:00:30 1970
# 将以秒数为代表的时间转换为struct_time对象。
print(time.gmtime(30))
# 将当前时间转换为struct_time对象。
print(time.gmtime())
# 将以秒数为代表的时间转换为代表当前时间的struct_time对象
print(time.localtime(30))
# 将元组格式的时间转换为秒数代表的时间
print(time.mktime((2018, 2, 4, 11, 8, 23, 0, 0 ,0))) # 1517713703.0
# 返回性能计数器的值
print(time.perf_counter())
# 返回当前进程使用CPU的时间
print(time.process_time())
#time.sleep(10)
# 将当前时间转换为指定格式的字符串
print(time.strftime('%Y-%m-%d %H:%M:%S'))
st = '2018年3月20日'
# 将指定时间字符串恢复成struct_time对象。
print(time.strptime(st, '%Y年%m月%d日'))
# 返回从1970年1970年1月1日0点整到现在过了多少秒。
print(time.time())
# 返回本地时区的时间偏移,以秒为单位
print(time.timezone) # 在国内东八区输出-28800

运行上面程序,可以看到如下输出结果:

Fri Feb 22 11:28:39 2019
Mon Feb 4 11:08:23 2018
Thu Jan 1 08:00:30 1970
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1,
tm_isdst=0)
time.struct_time(tm_year=2019, tm_mon=2, tm_mday=22, tm_hour=3, tm_min=28, tm_sec=39, tm_wday=4, tm_yday=53,
tm_isdst=0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=30, tm_wday=3, tm_yday=1,
tm_isdst=0)
1517713703.0
0.0
0.140625
2019-02-22 11:28:39
time.struct_time(tm_year=2018, tm_mon=3, tm_mday=20, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=79,
tm_isdst=-1)
1550806119.4960592
-28800

time 模块中的 strftime() 和 strptime() 两个函数互为逆函数,其中 strftime() 用于将 struct_time 对象或时间元组转换为时间字符串;而 strptime() 函数用于将时间字符串转换为 struct_time 对象。这两个函数都涉及编写格式模板,比如上面程序中使用 %Y 代表年、%m 代表月、%d 代表日、%H 代表时、%M 代表分、%S 代表秒。这两个函数所需要的时间格式字符串支持的指令如下表所示:


含义
%a 本地化的星期几的缩写名,比如 Sun 代表星期天
%A 本地化的星期几的完整名
%b 本地化的月份的缩写名,比如 Jan 代表一月
%B 本地化的月份的完整名
%c 本地化的日期和时间的表示形式
%d 代表一个月中第几天的数值,范固: 01~31
%H 代表 24 小时制的小时,范围:00~23
%I 代表 12 小时制的小时,范围:01~12
%j 一年中第几天,范围:001~366
%m 代表月份的数值,范围:01~12
%M 代表分钟的数值,范围:00~59
%p 上午或下午的本地化方式。当使用 strptime() 函数并使用 %I 指令解析小时时,%p 只影响小时字段
%S 代表分钟的数值,范围:00~61。该范围确实是 00~61,60 在表示闰秒的时间戳时有效,而 61 则是由于一些历史原因造成的
%U 代表一年中表示第几周,以星期天为每周的第一天,范围:00~53。在这种方式下,一年中第一个星期天被认为处于第一周 。当使用 strptime() 函数解析时间字符串时,只有同时指定了星期几和年份该指令才会有效
%w 代表星期几的数值,范围:0~6,其中 0 代表周日
%W 代表一年小第几周,以星期一为每周的第一天,范围:00~53。在这种方式下,一年中第一个星期一被认为处于第一周 。当使用 strptime() 函数解析时间字符串时,只有同时指定了星期几和年份该指令才会有效
%x 本地化的日期的表示形式
%X 本地化的时间的表示形式
%y 年份的缩写,范围:00~99,比如 2018 年就简写成 18
%Y 年份的完整形式。如 2018
%z 显示时区偏移
%Z 时区名(如果时区不行在,则显示为空)
%% 用于代表%符号

知识点扩展:

time模块

这个模块提供各种与时间相关的函数。相关功能,可以参见datetime和calendat模块。

此模块并非所有平台提供所有功能,因平台而异

以下是对一些术语和惯例的解释

  • 初始时间因平台而异。对于Unix平台,初始时间是1970,01,01,00:00:00(UTC)。查看每个操作平台的初始时间可以使用time.gmtime(0)函数。
  • 在所有POSIX平台上,从初始时间以来的秒数都不包括闰秒
  • 该模块中的函数可能不处理初始时间以前和遥远未来的日期和时间,未来的分界点对于32位操作系统是2038年。
  • UTC是协调世界时(以前称为格林尼治标准时间,GMT)。缩写UTC不是一个错误,而是英语和法语之间的妥协。
  • DST是夏令时,在一年中的某些时候,时区通常会调整一个小时。DST规则是神奇的(由当地法律决定),每年都在变化。
  • 各种实时函数的精度可能低于表示其值或参数的单位所建议的精度。

以上就是如何学习Python time模块的详细内容,更多关于Python time模块详解的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)

    Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块. 关于时间戳的几个概念 时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量. 时间元组(struct_time),包含9个元素. time.struct_time(tm_year=2017, tm_mon=10, tm_mday=1, tm_hour=14, tm_min=21, tm_sec=57, tm_wday=6, tm_yday=274, tm_isdst=0) 时间格式字

  • Python基于datetime或time模块分别获取当前时间戳的方法实例

    python的时间模块生成时间戳的方法是非常简单的,因为最近频繁用到了时间戳功能,这里简单总结了一下日常使用最为频繁的两个时间模块各自生成当前时间戳的方法,很简单,具体如下: now_time=str(datetime.datetime.now().strftime('%Y%m%d')) nowTime=str(time.strftime('%Y%m%d',time.localtime(time.time()))) print 'now_time:',now_time print 'nowTim

  • Python3.5内置模块之time与datetime模块用法实例分析

    本文实例讲述了Python3.5内置模块之time与datetime模块用法.分享给大家供大家参考,具体如下: 1.模块的分类 a.标准库(Python自带):sys.os模块 b.开源模块(第三方模块) c.自定义模块 2.内建模块--time (1)在Python中通常用以下几种方式来表示时间: a.时间戳:从1970年1月1日开始到当下的时间的秒数,导入time模块(import time),调用time.time()方法即可. b.格式化的时间字符串. c.元组(struct_time)

  • Python Datetime模块和Calendar模块用法实例分析

    本文实例讲述了Python Datetime模块和Calendar模块用法.分享给大家供大家参考,具体如下: datetime模块 1.1 概述 datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了更多的实用的函数,datetime的接口更加的直观,更容易调用 1.2 模块中的类 datetime:同时有时间与日期 timedelta:表示时间间隔,即两个时间点的间隔:主要用于计算时间的跨度 tzinfo: 时区相关的信息 date : 只关注日期 2.

  • Python日期时间Time模块实例详解

    本文实例讲述了Python日期时间Time模块.分享给大家供大家参考,具体如下: 关于时间和日期模块 python程序能用很多方式处理日期和时间,转换日期格式是一种常见的功能. python提供了一个time和calendar模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示. python的time模块下有很多函数可以转换常见的日期格式. Time模块 1.1 名词解释 UTC :格林威治天文时间,世界标准时间,

  • python中datetime模块中strftime/strptime函数的使用

    Python 的datetime模块 其实就是date和time 模块的结合,常见的属性方法都比较常用 比如: datetime.day,datetime.month,datetime.year 分别表示一个datetime对象的日,月,年:如下 from datetime import datetime dt=datetime.now() #创建一个datetime类对象 print dt.year,dt.month,dt.day ''' 输出为: 2015 3 8 ''' python中da

  • 如何学习Python time模块

    time 模块主要包含各种提供日期.时间功能的类和函数.该模块既提供了把日期.时间格式化为字符串的功能,也提供了从字符串恢复日期.时间的功能. 在 Python 的交互式解释器中先导入 time 模块,然后输入 [e for e in dir(time) if not e.startswith('_')] 命令,即可看到该模块所包含的全部属性和函数: >>> [e for e in dir(time) if not e.startswith('_')] ['altzone', 'asct

  • 简单学习Python time模块

    本文针对Python time模块进行分类学习,希望对大家的学习有所帮助. 一.壁挂钟时间 1.time() time模块的核心函数time(),它返回纪元开始的秒数,返回值为浮点数,具体精度依赖于平台. >>>import time >>>time.time() 1460599046.85416 2.ctime() 浮点数一般用于存储和比较日期,但是对人类不友好,要记录和打印时间,可以使用ctime(). >>>import time >>

  • Python新手学习标准库模块命名

    与Python标准库模块命名冲突 Python的一个优秀的地方在于它提供了丰富的库模块.但是这样的结果是,如果你不下意识的避免,很容易你会遇到你自己的模块的名字与某个随Python附带的标准库的名字冲突的情况(比如,你的代码中可能有一个叫做email.py的模块,它就会与标准库中同名的模块冲突). 这会导致一些很粗糙的问题,例如当你想加载某个库,这个库需要加载Python标准库里的某个模块,结果呢,因为你有一个与标准库里的模块同名的模块,这个包错误的将你的模块加载了进去,而不是加载Python标

  • Python学习之os模块及用法

    os 模块代表了程序所在的操作系统,主要用于获取程序运行所在操作系统的相关信息. 在 Python 的交互式解释器中先导入 os 模块,然后输入 os.__all__ 命令(__all__ 变量代表了该模块开放的公开接口),即可看到该模块所包含的全部属性和函数. 此处仅介绍 os 模块中常用的属性和函数: os.name:返回导入依赖模块的操作系统名称,通常可返回 'posix'.'nt'. 'java' 等值其中之一. os.environ:返回在当前系统上所有环境变量组成的字典. os.fs

  • Python学习之time模块的基本使用

    前言 在我们学习的过程中,肯定会用到各种各样的模块.所以今天我们从time模块开始学习 首先我们在使用某个模块的时候,肯定要先导入这个模块 import time 而当我们想看看这个模块是干什么的,我们可以使用help函数来看 print(help(time)) # 打印帮助信息 "E:\Program Files (x86)\python_3.8\python.exe" D:/Application/pycharm_works/_1/test/python模块之time模块.py H

  • Python openpyxl模块学习之轻松玩转Excel

    目录 前言 openpyxl 安装 打开/创建工作簿 访问工作表 获取单元格信息 修改工作表 修改样式 前言 当你需要每天对 Excel 做大量重复的操作,如果只靠人工来做既浪费时间,又十分枯燥,好在 Python 为我们提供了许多操作 Excel 的模块,能够让我们从繁琐的工作中腾出双手. 今天就和大家分享一个快速处理 Excel 的模块 openpyxl,它的功能相对与其他模块更为齐全,足够应对日常出现的问题. openpyxl 安装 直接在命令提示符中输入. pip install ope

  • Python学习之sys模块使用教程详解

    sys模块 与 os包一样,也是对系统资源进行调用.功能同样也是非常丰富,接下来我们会对 sys模块的一些简单且常用的函数进行介绍,主要针对一些非功能性的函数与属性来认识一些不太常见的 Python 背后的事件. sys 中的常用方法 函数名 参数 介绍 举例 返回值 modules(属性) 无 将Python启动时加载的模块集合起来并返回一个列表 sys.modules 列表 path(属性) 无 返回当前Py的环境路径(当前py环境可以导入内置.第三方包与函数的所在路径) sys.path

  • Python学习之日志模块详解

    目录 日志的作用 日志的等级 logging 模块的使用 logging 模块演示小案例 OK,今天我们来学习一下 python 中的日志模块,日志模块也是我们日后的开发工作中使用率很高的模块之一,接下来们就看一看今天具体要学习日志模块中的那些内容吧. 日志的作用 说到日志,我们完全可以想象为现实生活中的日记.日记是我们平时记录我们生活中点点滴滴的一种方法,而日志我们可以认为是 程序的日记 ,程序的日记是用来记录程序的行为,一般来说我们可以通过日志记录一些程序的重要信息. 比如哪里报错了?报错原

  • Python学习之随机模块random详解

    目录 random.random() random.uniform() random.randint() random.choice() random.sample() random.randrange() random 模块 - 抽奖小案例 random 模块 - 双色球小案例 该章节我们来学习一下 Python 中非常简单但也非常有用的模块 —> random ,此模块主要用于生成随机数.接下面我们就来了解一下 random 模块中最常见的几种方法. random.random() 功能:随

  • python标准库学习之sys模块详解

    目录 前言 处理命令行参数 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.platform 返回操作系统平台名称 sys.stdin.readline()与input sys.stdout与print 总结 补充:sys 模块的实例 前言 sys模块是与python解释器交互的一个接口.sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含

随机推荐