1 time 模块:

  读取系统时钟当前时间;

  在 time 模块中,time.time()和 time.sleep()函数是最有用的模块。

1.1 time.time()

  time.time()函数返回自1970 年 1 月 1 日 0 点以来的秒数,是一个浮点值,这个数字称为 UNIX 纪元时间戳。

  In [2]: time.time()

  Out[2]: 1504746354.671471

1.2 time.sleep()

如果需要让程序暂停一下,就调用 time.sleep()函数,并传入希望程序暂停的秒数。

In [5]: for i in range(3):

   ...:     print ('stop 2s')

   ...:     time.sleep(2)

   ...:     print ('stop 2s ok')

   ...:    

stop 2s

stop 2s ok

stop 2s

stop 2s ok

stop 2s

stop 2s ok

为了让这些浮点值更易于处理,可以用 Python 内置的 round()函数将它们缩短,该函数按照指定的精度四舍五入到一个浮点数。

In [12]: round(1504746842.804046,3)

Out[12]: 1504746842.804

In [13]: round(1504746842.804046)

Out[13]: 1504746843.0

2 datetime 模块

time 模块用于取得 Unix 纪元时间戳,并加以处理。但是,如果以更方便的格式显示日期,或对日期进行算术运算(例如,搞清楚 205 天前是什么日期,或 123天后是什么日期),就应该使用 datetime 模块。

datetime 模块有自己的datetime 数据类型。datetime 值表示一个特定的时刻。

In [15]: import datetime

In [16]: datetime.datetime.now()

Out[16]: datetime.datetime(2017, 9, 7, 9, 18, 13, 519043)

In [17]: now = datetime.datetime.now()

In [18]: now

Out[18]: datetime.datetime(2017, 9, 7, 9, 19, 10, 745992)

In [19]: now.year,now.month,now.day

Out[19]: (2017, 9, 7)

In [20]: now.hour,now.minute,now.second

Out[20]: (9, 19, 10)

In [23]: dt = datetime.datetime(2017,9,9,10,30,00)

In [24]: dt

Out[24]: datetime.datetime(2017, 9, 9, 10, 30)

2.1 datetime.datetime.now()

调用 datetime.datetime.now()返回一个 datetime 对象,表示当前的日期和时

间,根据你的计算机的时钟。这个对象包含当前时刻的年、月、日、时、分、秒和微秒。也可以利用 datetime.datetime()函数,向它传入代表年、月、日、时、分、秒的整数,得到特定时刻的 datetime 对象。这些整数将保存在 datetime 对象的 year、month、day、hour、minute 和 second属性中。

2.2 日期时间转换

Unix 纪元时间戳可以通过 datetime.datetime.fromtimestamp(),转换为 datetime对象。datetime 对象的日期和时间将根据本地时区转换。

In [26]: datetime.datetime.fromtimestamp(time.time())

Out[26]: datetime.datetime(2017, 9, 7, 9, 25, 31, 96888)

表达式 datetime.datetime.now()和 datetime.datetime.fromtimestamp(time.time())做的事情相同,它们都返回当前时刻的 datetime 对象。

2.3 日期时间比较

datetime 对象可以用比较操作符进行比较,弄清楚谁在前面。后面的datetime 对象是“更大”的值。

In [30]: oct31_2015 = datetime.datetime(2015, 10, 31, 0, 0, 0)

In [31]: oct31_2016 = datetime.datetime(2016, 10, 31, 0, 0, 0)

In [32]: oct2015_31 = datetime.datetime(2015, 10, 31, 0, 0, 0)

In [33]: oct31_2015 == oct2015_31

Out[33]: True

In [34]: oct31_2016 > oct31_2015

Out[34]: True

In [35]: oct31_2016 < oct31_2015

Out[35]: False

2.3 timedelta 数据类型

  datetime 模块还提供了 timedelta 数据类型,它表示一段时间,而不是一个时刻。

  要创建 timedelta 对象,就用 datetime.timedelta()函数。datetime.timedelta()函数接受关键字参数 weeks、days、hours、minutes、seconds、milliseconds 和 microseconds。

In [37]: delta = datetime.timedelta(days=1, hours=10, minutes=9, seconds=8)

In [38]: delta

Out[38]: datetime.timedelta(1, 36548)

timedelta 对象拥有的总时间以天、秒、微秒来表示。这些数字分别保存在 days、seconds 和 microseconds 属性中。

In [39]: delta.days,delta.seconds,delta.microseconds

Out[39]: (1, 36548, 0)

total_seconds()方法返回只以秒表示的时间。

In [42]: delta.total_seconds()

Out[42]: 122948.0

将一个 timedelta 对象传入 str(),将返回格式良好的、人类可读的字符串表示。

In [43]: str(delta)

Out[43]: '1 day, 10:09:08'

2.4 日期时间运算

算术运算符可以用于对 datetime 值进行日期运算。例如,要计算今天之后 1000天的日期。

In [44]: dt = datetime.datetime.now()

In [45]: dt

Out[45]: datetime.datetime(2017, 9, 7, 9, 43, 47, 240307)

In [46]: thousandDays = datetime.timedelta(days=1000)

In [47]: dt + thousandDays

Out[47]: datetime.datetime(2020, 6, 3, 9, 43, 47, 240307)

利用+和-运算符,timedelta 对象与 datetime 对象或其他 timedelta 对象相加或相减。利用*和/运算符,timedelta 对象可以乘以或除以整数或浮点数。

In [48]: aboutThirtyYears = datetime.timedelta(days=365 * 30)

In [49]: dt

Out[49]: datetime.datetime(2017, 9, 7, 9, 43, 47, 240307)

In [50]: dt - aboutThirtyYears

Out[50]: datetime.datetime(1987, 9, 15, 9, 43, 47, 240307)

In [51]: dt - (2 * aboutThirtyYears)

Out[51]: datetime.datetime(1957, 9, 22, 9, 43, 47, 240307)

2.5 将 datetime 对象转换为字符串

  Unix 纪元时间戳和 datetime 对象对人类来说都不是很友好可读。利用 strftime()方

法,可以将datetime 对象显示为字符串。(strftime()函数名中的f 表示格式,format)。

  该的 strftime()方法使用的指令类似于 Python 的字符串格式化。

向 strftime()传入一个定制的格式字符串,其中包含格式化指定(以及任何需要的斜线、冒号等),strftime()将返回一个格式化的字符串,表示 datetime 对象的信息。

In [52]: dt

Out[52]: datetime.datetime(2017, 9, 7, 9, 43, 47, 240307)

In [53]: dt.strftime('%Y/%m/%d %H:%M:%S')

Out[53]: '2017/09/07 09:43:47'

In [54]: dt.strftime('%I:%M %p')

Out[54]: '09:43 AM'

In [55]: dt.strftime("%B of '%y")

Out[55]: "September of '17"

2.6 将字符串转换成 datetime 对象

  strptime()函数与strftime()方法相反。定制的格式字符串使用相同的指令,像 strftime()一样。必须将格式字符串传入 strptime(),这样它就知道如何解析和理解日期字符串(strptime()函数名中 p 表示解析,parse)。

  

 In [56]: datetime.datetime.strptime("September of '17","%B of '%y")

Out[56]: datetime.datetime(2017, 9, 1, 0, 0)

In [57]: datetime.datetime.strptime('09:43 AM','%I:%M %p')

Out[57]: datetime.datetime(1900, 1, 1, 9, 43)

In [58]: datetime.datetime.strptime('2017/09/07 09:43:47','%Y/%m/%d %H:%M:%S')

Out[58]: datetime.datetime(2017, 9, 7, 9, 43, 47)

3 总结:Python 的时间函数

3.1 时间数据类型

在 Python 中,日期和时间可能涉及好几种不同的数据类型和函数。下面回顾表示时间的 3 种不同类型的值:

  • Unix 纪元时间戳(time 模块中使用)是一个浮点值或整型值,表示自 1970 年1 月 1 日午夜 0 点(UTC)以来的秒数。
  • datetime 对象(属于 datetime 模块)包含一些整型值,保存在 year、month、day、
  • hour、minute 和 second 等属性中。
  • timedelta 对象(属于 datetime 模块)表示的一段时间,而不是一个特定的时刻。

3.2 函数返回值

下面回顾了时间函数及其参数和返回值:

  • time.time()函数返回一个浮点值,表示当前时刻的 Unix 纪元时间戳。
  • time.sleep(seconds)函数让程序暂停 seconds 参数指定的秒数。
  • datetime.datetime(year, month, day, hour, minute, second)函数返回参数指定的时刻的 datetime 对象。如果没有提供 hour、minute 或 second 参数,它们默认为 0。
  • datetime.datetime.now()函数返回当前时刻的 datetime 对象。
  • datetime.datetime.fromtimestamp(epoch)函数返回 epoch 时间戳参数表示的时刻的 datetime 对象。
  • datetime.timedelta(weeks, days, hours, minutes, seconds, milliseconds, microseconds)函数返回一个表示一段时间的 timedelta 对象。该函数的关键字参数都是可选的,不包括 month 或 year。
  • total_seconds()方法用于 timedelta 对象,返回 timedelta 对象表示的秒数。
  • strftime(format)方法返回一个字符串,用 format 字符串中的定制格式来表示
  • datetime 对象表示的时间。详细格式参见表 15-1。
  • datetime.datetime.strptime(time_string, format)函数返回一个 datetime 对象,它的时刻由time_string 指定,利用format 字符串参数来解析。详细格式参见表 15-1。

Python时间模块的更多相关文章

  1. 浅谈Python时间模块

    浅谈Python时间模块 今天简单总结了一下Python处理时间和日期方面的模块,主要就是datetime.time.calendar三个模块的使用.希望这篇文章对于学习Python的朋友们有所帮助 ...

  2. python时间模块-time和datetime

    时间模块 python 中时间表示方法有:时间戳,即从1975年1月1日00:00:00到现在的秒数:格式化后的时间字符串:时间struct_time 元组. struct_time元组中元素主要包括 ...

  3. python 时间模块 -- time

    time 时间模块 和时间有关系的我们就要用到时间模块.在使用模块之前,应该先导入模块. # 常用方法 import time print("现在执行我") time.sleep( ...

  4. python 时间模块小结

    python有两个重要的时间模块,分别是time和datetime time模块 表示时间的几种方法 时间元组 time.struct_time( tm_year=2016, tm_mon=7, tm ...

  5. Python时间模块。

    python中时间的表示方式 unix时间戳,字符串时间,格式化时间 时间模块有,time,datetime,calendar #time模块 import time #获取本地时间戳,返回浮点数 p ...

  6. Python时间模块datetime用法

    时间模块datetime是python内置模块,datetime是Python处理日期和时间的标准库. 1,导入时间模块 from datetime import datetime 2,实例 from ...

  7. python时间模块time,datetime

    时间模块time.datetime 模块(module)是 Python 中非常重要的东西,你可以把它理解为 Python 的扩展工具.换言之,Python 默认情况下提供了一些可用的东西,但是这些默 ...

  8. python时间模块time

    时间模块 时间模块主要处理和时间相关的事件,我们可以通过模块获取不同数据类型的时间以便我们需求. 表现时间的三种方式: 在pythn中表现时间的方式主要有三种:时间戳(stamptime).元祖时间( ...

  9. python——时间模块

    格式化时间字符串 %y 两位数的年份表示(00-99) %Y 四位数的年份表示(0000-9999) %m 月份(01-12) %d 月内的一天(0-31) %H 24小时制的小时数(0-23) %I ...

  10. Python—时间模块(time)和随机模块(random)

    时间模块 time模块 获取秒级时间戳.毫秒级时间戳.微秒级时间戳 import time t = time.time() print t # 原始时间数据 1574502460.90 print i ...

随机推荐

  1. PAT (Advanced Level) Practise 1002 解题报告

    GitHub markdownPDF 问题描述 解题思路 代码 提交记录 问题描述 A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 ...

  2. BZOJ.4818.[SDOI2017]序列计数(DP 快速幂)

    BZOJ 洛谷 竟然水过了一道SDOI!(虽然就是很水...) 首先暴力DP,\(f[i][j][0/1]\)表示当前是第\(i\)个数,所有数的和模\(P\)为\(j\),有没有出现过质数的方案数. ...

  3. Java笔记(十五) 并发包

    并发包 Java中还有一套并发工具包,位于包java.util.concurrent下,里面包括很多易用 且很多高性能的并发开发工具. 一.原子变量和CAS 为什么需要原子变量,因为对于例如count ...

  4. React Native小白入门学习路径——四

    上一周一直在弄着老师布置的各种任务,再加上要做的都还没做完.所以上周的总结到现在才写完发出来..真的觉得老师太高估我们这些菜鸡了. 也许是我太着急了,在自己还没有足够储备去完成自己的项目,总觉得先找一 ...

  5. BZOJ2616 : SPOJ PERIODNI

    长为$A$,宽为$B$的矩阵放$K$个车的方案数$=C(A,K)\times C(B,K)\times K!$. 建立笛卡尔树,那么左右儿子独立,设$f[i][j]$表示$i$子树内放$j$个车的方案 ...

  6. 查看mysql数据库体积

    查看MySQL数据库大小 1.首先进入information_schema 数据库(存放了其他的数据库的信息) ? 1 2 mysql> use information_schema; Data ...

  7. C++程序设计方法3:default修饰符

    编译器自动生成的成员函数 如果以下成员函数用户都没有为类实现,则编译器会自动为类生成他们的缺省的实现 默认构造函数,空函数,什么也不做 析构函数,空函数,什么也不做: 拷贝构造函数-按bit位复制对象 ...

  8. C++学习笔记54:关联容器,函数对象

    关联容器的特点 1.每个关联容器都有一个键(key) 2.可以根据键高效查找元素 集合set 集合用来存储一组无重复的元素,由于集合的元素本身是有序的,可以高效地查找元素,也可以方便地指定大小范围的元 ...

  9. ios真机中Text组件出现多余边框

    问题 ios真机中Text组件出现多余边框(模拟器不会出现,真机会出现该问题). 原因 在ios启动页设置中,预设的尺寸要求与设置中图片尺寸不符合导致屏幕精度计算出现问题(启动屏分辨率错误设置会导致手 ...

  10. tablespace(表空间) / segment(断) / extent(盘区)/ block(块)/datafile(文件)之间的关系

    tablespace(表空间) / segment(断) / extent(盘区)/ block(块)之间的关系   tablespace : 一个数据库划分为一个或多个表逻辑单位,即表空间,每个表空 ...