Python 中 time 模块与 datetime 模块在使用中的不同之处

Python 中提供了对时间日期的多种多样的处理方式,主要是在 time 和 datetime 这两个模块里。今天稍微梳理一下这两个模块在使用上的一些区别和联系。
time
在 Python 文档里,time 是归类在 Generic Operating System Services 中,换句话说, 它提供的功能是更加接近于操作系统层面的。通读文档可知,time 模块是围绕着 Unix Timestamp 进行的。
该模块主要包括一个类 struct_time,另外其他几个函数及相关常量。 需要注意的是在该模块中的大多数函数是调用了所在平台 C library 的同名函数, 所以要特别注意有些函数是平台相关的,可能会在不同的平台有不同的效果。另外一点是,由于是基于 Unix Timestamp,所以其所能表述的日期范围被限定在 1970 - 2038 之间,如果你写的代码需要处理在前面所述范围之外的日期,那可能需要考虑使用 datetime 模块更好。文档解释比较费劲,具体看看怎么用:    
In [1]: import time
 
In [2]: time.time()
Out[2]: 1414332433.345712
In [3]: timestamp = time.time()
 
In [4]: time.gmtime(timestamp)
Out[4]: time.struct_time(tm_year=2014, tm_mon=10, tm_mday=26, tm_hour=14, tm_min=7, tm_sec=13, tm_wday=6, tm_yday=299, tm_isdst=0)
 
In [5]: time.localtime(timestamp)
Out[5]: time.struct_time(tm_year=2014, tm_mon=10, tm_mday=26, tm_hour=22, tm_min=7, tm_sec=13, tm_wday=6, tm_yday=299, tm_isdst=0)
In [6]: struct_time = time.localtime(timestamp)
 
In [7]: time.ctime(timestamp)
Out[7]: ‘Sun Oct 26 22:07:13 2014‘
 
In [8]: time.asctime(struct_time)
Out[8]: ‘Sun Oct 26 22:07:13 2014‘
 
In [9]: time.mktime(struct_time)
Out[9]: 1414332433.0
 
In [10]: time.strftime("%a, %d %b %Y %H:%M:%S +0000", struct_time)
Out[10]: ‘Sun, 26 Oct 2014 22:07:13 +0000‘
 
In [11]: time.strptime("30 Nov 00", "%d %b %y")
Out[11]: time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)

问题不大,可能有时候需要注意一下使用的时区。

datetime
datetime 比 time 高级了不少,可以理解为 datetime 基于 time 进行了封装,提供了更多实用的函数。在 datetime 模块中包含了几个类,具体关系如下:

object

timedelta  # 主要用于计算时间跨度
    tzinfo         # 时区相关
    time          # 只关注时间
    date          # 只关注日期
    datetime  # 同时有时间和日期

名称比较绕口,在实际实用中,用得比较多的是 datetime.datetime 和 datetime.timedelta ,另外两个 datetime.date 和 datetime.time 实际使用和 datetime.datetime 并无太大差别。 下面主要讲讲 datetime.datetime 的使用。使用 datetime.datetime.now () 可以获得当前时刻的 datetime.datetime 实例。 对于一个 datetime.datetime 实例,主要会有以下属性及常用方法,看名称就能理解,应该没有太大问题:

datetime.year
    datetime.month
    datetime.day
    datetime.hour
    datetime.minute
    datetime.second
    datetime.microsecond
    datetime.tzinfo    
datetime.date () # 返回 date 对象
datetime.time () # 返回 time 对象
datetime.replace (name=value) # 前面所述各项属性是 read-only 的,需要此方法才可更改
datetime.timetuple () # 返回 time.struct_time 对象
dattime.strftime (format) # 按照 format 进行格式化输出

...
除了实例本身具有的方法,类本身也提供了很多好用的方法:

datetime.today () a  # 当前时间,localtime
    datetime.now ([tz]) # 当前时间默认 localtime
    datetime.utcnow ()  # UTC 时间
    datetime.fromtimestamp (timestamp [, tz]) # 由 Unix Timestamp 构建对象
    datetime.strptime (date_string, format)  # 给定时间格式解析字符串

...

请注意,上面省略了很多和时区相关的函数,如需使用请查文档。对于日期的计算,使用 timedelta 也算是比较简单的:    
In [1]: import datetime
In [2]: time_now = datetime.datetime.now()
In [3]: time_now
Out[3]: datetime.datetime(2014, 10, 27, 21, 46, 16, 657523)
 
In [4]: delta1 = datetime.timedelta(hours=25)
In [5]: print(time_now + delta1)
2014-10-28 22:46:16.657523
 
In [6]: print(time_now - delta1)
2014-10-26 20:46:16.657523
甚至两个 datetime 对象直接相减就能获得一个 timedelta 对象。如果有需要计算工作日的需求,可以使用 business_calendar 这个库,不需要装其他依赖就可使用。

原文地址:https://www.cnblogs.com/reaix/p/12268044.html

时间: 2024-08-30 00:58:07

Python 中 time 模块与 datetime 模块在使用中的不同之处的相关文章

Python中的time模块与datetime模块用法总结

http://www.jb51.net/article/87721.htm time模块time模块是包含各方面对时间操作的函数. 尽管这些常常有效但不是所有方法在任意平台中有效. time用struct_time表示时间 ? 1 2 3 4 5 6 7 8 import time # time.struct_time(tm_year=2015, tm_mon=4, tm_mday=24,           tm_hour=14, tm_min=17, tm_sec=26,          

(转)python time模块和datetime模块详解

python time模块和datetime模块详解 原文:http://www.cnblogs.com/tkqasn/p/6001134.html 一.time模块 time模块中时间表现的格式主要有三种: a.timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量 b.struct_time时间元组,共有九个元素组. c.format time 格式化时间,已格式化的结构使时间更具可读性.包括自定义格式和固定格式. 1.时间格式转换图: 2.主要ti

Python常用模块——time&datetime模块

Python常用模块--time&datetime模块 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime,calendar(很少用,不做介绍). 我们写程序时对时间的处理可以归为以下3种: 1.时间的显示:在屏幕显示,记录日志等. 2.时间的转换:比如把字符串格式的日期转换成Python中的日期类型. 3.时间的运算:计算两个日期间的差值等. 一.time模块 在Python中,通常有以下3种方式来表示时间: 1.时间戳(time

python中常用的内建模块

[datetime] datetime是python处理日期和时间的标准库 获取当前日期和时间 我们先看如何获取当前日期和时间: 注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类. 如果仅导入import datetime,则必须引用全名datetime.datetime. datetime.now()返回当前日期和时间,其类型是datetime. 获取指定日期和时间 要

Python中的二叉树查找算法模块

问题 思路说明 二叉树查找算法,在开发实践中,会经常用到.按照惯例,对于这么一个常用的东西,Python一定会提供轮子的.是的,python就是这样,一定会让开发者省心,降低开发者的工作压力. python中的二叉树模块内容: BinaryTree:非平衡二叉树 AVLTree:平衡的AVL树 RBTree:平衡的红黑树 以上是用python写的,相面的模块是用c写的,并且可以做为Cython的包. FastBinaryTree FastAVLTree FastRBTree 特别需要说明的是:树

【转】Python中操作mysql的pymysql模块详解

Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11.mysql版本:5.6.24 一.安装 1 pip3 install pymysql 二.使用操作 1.执行SQL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Python中操作mysql的pymysql模块详解

Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,pymysql支持python3.x. 一.安装 pip install pymysql 二.使用操作 1.执行SQL #!/usr/bin/env pytho # -*- coding:utf-8 -*- importpymysql # 创建连接 conn =pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd

Python中time模块和datetime模块的常用操作以及几种常用时间格式间的转换

最常见以及常用的几种时间格式 1.时间戳(timestamp),时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. 2.时间元组(struct_time),共有九个元素组. 3.格式化时间(format time ),可以格式化为固定或者自定义格式,增加可读性. #!/usr/bin/env python # -*- coding:utf-8 -*- import time #时间戳格式,默认获取当前时间 1500029143.7640195 timestamp = tim

python time模块和datetime模块详解

一.time模块 time模块中时间表现的格式主要有三种: a.timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量 b.struct_time时间元组,共有九个元素组. c.format time 格式化时间,已格式化的结构使时间更具可读性.包括自定义格式和固定格式. 1.时间格式转换图: 2.主要time生成方法和time格式转换方法实例: #! /usr/bin/env python # -*- coding:utf-8 -*- # __auth