返回目录

本篇索引

(1)datetime模块

(2)time模块

(1)datetime模块

datetime模块可以处理时间和日期,其中包含以下类:date类、time对象、datetime对象、timedelt对象、tzinfo对象。

● date类

date类用于处理日期。

操作 说明
创建date对象
date(year, month, day) 创建一个新的日期对象,返回的date对象是不可变的。入参year, month, day分别整数形式的年、月、日。
类属性
date.min 能够表示的最小日期:datetime.date(1,1,1)。
date.max 能够表示的最大日期:datetime.date(9999,12,31)。
date.resolutiom 不相等的日期之间最小可解析的差值:datetime.timedelta(1)
类方法
date.today() 返回当前日期的date对象。
date.fromtimestamp(timestamp) 返回对应时间戳timestamp的date对象,timestamp是time.time()函数的返回值。
date.fromordinal(ordinal) 返回从最小日期(公元1年1月1日)开始算起的ordinal天的date对象。
实例属性
d.year 实例日期对应的年。
d.month 实例日期对应的月。
d.day 实例日期对应的日。
实例方法
d.weekday() 返回实例日期对应的周几,范围:0~6(0表示周一)
d.isoweekday() 返回实例日期对应的周几,范围:1~7(1表示周一)
d.ctime() 返回一个字符串,格式与“time模块”中的time.ctime()的格式相同。
d.isoformat() 返回一个字符串(ISO 8601格式),形式为:'YYYY-MM-DD'
d.isocalendar() 返回一个元组:(iso_year, iso_week, iso_weekday),iso_weekday范围为:1~7,iso_week范围为:1~53(当年第一个星期四的周为第1周)。
d.strftime(format) 返回一个字符串,表示日期的格式与“time模块”中的time.strftime()相同,只能用于1900年以后的日期。 format格式说明
d.timetuple() 返回适合函数在time模块中使用的time_struct对象,其中小时、分、秒设为0。
d.toordinal() 将实例日期转换为一个从公元1年1月日起的天数值。
d.replace([year [,month [,day]]]) 返回一个新的date对象,并使用入参值代替原有值。

● time类

time类用于处理时间。

操作 说明
创建time对象
time(hour [,minute [,second [,microsecond [,tzinfo]]]]) 创建一个新的时间对象,返回的time对象是不可变的。入参micorsecond是微秒,入参tzinfo是一个时区tzinfo类的实例,详见后述。
类属性
t.min 能够表示的最小时间:datetime.time(0,0)
t.max 能够表示的最大时间:datetime.time(23,59,59,999999)
t.resolution 不等的time对象之间的最小可解析的差值:datetime.time(0,0,1)
实例属性
d.hour 实例日期对应的小时。
d.minute 实例日期对应的分。
d.second 实例日期对应的秒。
d.microsecond 实例日期对应的微秒。
d.tzinfo 实例日期对应的tzinfo时区。
实例方法
t.isoformat() 返回一个字符串,形式为:"HH:MM:SS.mmmmmm",如果微秒为0,则省略微秒部分。如果提供了时区信息,会再加上一个偏移量。
t.strftime(format) 返回一个字符串,格式与“time模块”中的time.strftime()相同。 format格式说明
t.replace(hour [,minute [,second [,microsecond [,tzinfo]]]]) 返回一个新的time对象,并使用入参提供的值替代原实例中的值。
t.dst() 返回t.tzinfo.dst(None)的值(夏令时),是一个timedelta对象。如果未设置时区,则返回None。
t.tzname() 返回t.tzinfo.tzname()的值,如果未设置时区,则返回None。
t.utcoffset() 返回t.tzinfo.utcoffset(None)的值,是一个timedelta对象。如果未设置时区,则返回None。

● datetime类

datetime类用于处理时间和日期。

操作 说明
创建datetime对象
datetime(year, month, day [hour [,minute [,second [,microsecond [,tzinfo]]]]]) 创建一个新的datetime对象,入参含义同date对象和time对象。返回的datetime对象是不可变的
类属性
datetime.min 能够表示的最小时间:datetime.datetime(1,1,1,0,0)
datetime.max 能够表示的最大时间:datetime.datetime(9999,12,31,23,59,59,999999)
datetime.resolution 不等的datetime对象之间的最小可解析的差值:datetime.timedelta(0,0,1)
类方法
datetime.now([tz]) 基于当前本地日期时间创建一个datetime对象,tz是可选时区信息。
datetime.utcnow() 基于当前的UTC日期时间创建一个datetime对象。
datetime.combine(date, time) 通过组合date对象和time对象,创建出一个datetime对象。
datetime.fromordinal() 通过指定序数天数,创建一个datetime对象,时间数值均为0。
datetime.fromtimestamp(timestamp [,tz]) 基于“time模块”中的time.time()函数返回的时间戳,创建一个datetime对象,tz是可选时区信息。
datetime.utcfromtimestamp(timestamp) 基于“time模块”中的time.gmtime()函数返回的时间戳,创建一个datetime对象。
datetime.strptime(datestring, format) 根据format中的日期格式,解析datestring中的日期字符串,从而创建一个datetime对象。解析使用“time模块”中的strptime()函数。 format格式说明
实例属性
d.year 实例对应的年。
d.month 实例对应的月。
d.day 实例对应的日。
d.hour 实例对应的小时。
d.minute 实例对应的分。
d.second 实例对应的秒。
d.microsecond 实例对应的微秒。
d.tzinfo 实例对应的tzinfo时区。
实例方法
d.date() 返回一个具有相同日期的date对象。
d.time() 返回一个具有相同时间的time对象,没有时区信息。
d.utctimetuple() 返回time.struct_time对象。
d.timetz() 使用相同的时间和时区信息返回time对象。
t.strftime(format) 返回一个字符串,格式与“time模块”中的time.strftime()相同。 format格式说明
d.astimezone(tz) 返回一个位于不同时区tz中的新datetime对象,新对象的UTC标准时间同本实例的UTC标准时间。
d.replace(year, month, day [hour [,minute [,second [,microsecond [,tzinfo]]]]]) 返回一个新的datetime对象,并使用入参值代替原有值。

● timedelta类与日期运算

timedelta对象表示两个日期或时间之间的差值(时间跨度)。

操作 说明
创建timedelta
timedelta([days [,seconds [,microsecond [,miliseconds [,minutes [,hours [,weeks]]]]]]]) 创建表示两个日期时间之差的timedelta对象,只有days, seconds, microsecond有意义,它们用于在内部表示差值。如果提供其他参数,它们将被转换为以上三值。返回的time对象是不可变的
类属性
timedelta.min 能够表示的最大跨度的负timedelta值:datetime.timedelta(-999999999)
timedelta.max 能够表示的最大跨度的正timedelta值:datetime.timedelta(days=999999999,hours=23,minutes59,seconds=59,microseconds=999999)
timedelta.resolution 不等的timedelta对象之间的最小可解析的差值:datetime.timedelta(microseconds=1)
实例属性
td.days 实例对应的天数差。
td.seconds 实例对应的秒数差(一天之内)。
td.microseconds 实例对应的微秒差(一天之内)。

timedelta本身可进行的数学运算:

操作 描述 示例
+ 两个时间跨度相加 td3 = td1 + td2
- 两个时间跨度相减 td3 = td1 - td2
* 时间跨度乘以整数 td2 = td1 * i; td2 = i * td1
// 时间跨度地板除以整数 td2 = td1 // i
+= 一元加法 td2 += td1
-= 一元减法 td2 -= td1
- 取负 td2 = -td1
abs() 取绝对值 td2 = abs(td1)
< 小于 td1 < td2
<= 小于等于 td1 <= td2
== 相等 td1 == td2
!= 不等 td1 != td2
> 大于 td1 > td2
>= 大于等于 td1 >= td2

date对象、datetime对象、时间跨度timedelta对象之间可以互相运算:

操作 描述 示例
跨度 = 日期 - 日期 返回timedelta对象 td = date1 - date2
日期 = 日期 - 跨度 返回datetime对象 date2 = date1 - td
日期 = 日期 + 跨度 返回datetime对象 date2 = date1 + td
< 日期比较:小于 date1 < date2
<= 日期比较:小于 date1 <= date2
== 日期比较:相等 date1 == date2
!= 日期比较:不等 date1 != date2
> 日期比较:大于 date1 > date2
>= 日期比较:大于等于 date1 >= date2

日期增加1天的计算:

import datetime
the_day = datetime.datetime(2019,1,1)
one_day = datetime.timedelta(days=1)
the_next_day = the_day + one_day
the_next_day.date().isoformat() # 结果为:'2019-01-02'

● tzinfo对象。

tzinfo仅仅是一个基类,通过继承tzinfo类和实现以下方法可创建一个时区。

操作 说明
tz.tzname(dt) 返回代表时区名称的字符串,如:'Asia/Shanghai',入参dt是一个datetime对象或None。
tz.utcoffset(dt) 返回timedelta对象,表示本地时间与UTC时间的偏移,单位是分钟。入参dt是一个datetime对象或None。
tz.fromutc(dt) 将入参dt(datetime对象)从UTC时间转换为本地时区,并返回一个新的datetime对象,此方法由datetime对象上的astimezne()方法调用,tzinfo已提供了默认实现,一般没有必要重新定义此方法。
tz.dst(dt) 返回一个timedelta对象,代表夏令时(Daylight Saving Time)调整。如果没有关于夏令时的信息,则返回None。入参dt是一个datetime对象或None。

示例如何定义一个新的时区:

import datetime
class MyZone(datetime.tzinfo):
TZOFFSET = 8 # 与UTC相差8小时
def utcoffset(self, dt):
return datetime.timedelta(hours=TZOFFSET) def tzname(self, dt):
return 'Asia/Shanghai'

(2)time模块

time模块提供与时间相关的各种函数。在Python中,测量时间的方法是计算从“纪元开始”的秒数,在time=0秒的时刻称为:epoch。在类UNIX上,“纪元开始”为1970年1月1日,其他系统上由time.gmtime(0)决定。

● struct_time对象

time模块经常会用到struct_time对象,它具有以下属性:

属性 属性
tm_year 年份4位数 tm_wday 星期几(0~6),0表示星期一
tm_mon 月(1~12) tm_yday 一年中第几天(1~366)
tm_mday 日(1~31) tm_isdst 夏令时(-1、0、1)
tm_hour 时(0~23)    
tm_min 分(0~59)    
tm_sec 秒(0~61)    

time模块的常量和函数:

名称 说明
模块常量
tzname 包含“本地时区”和“本地夏令时时区”的名称的元组。
timezone 本地的(非夏令时)时区。
altzone 夏令时期间使用的时区。
daylight 如果定义了夏令时时区,它将被设为一个非0值。
函数
time.time() 返回当前UTC时间,形式是从“纪元开始”的秒数(浮点数)。
time.mktime(tuple) 入参为一个struct_time对象(或类似的元组),将其转换为从“纪元开始”的秒数(浮点数)。如果输入的不是有效时间,将引发OverflowError异常。
time.ctime([secs]) 将从“纪元开始”计算的秒数形式的时间,转换为代表本地时间的字符串。与asctime(localtime(secs))相同。如果省略入参secs,就会使用当前时间。
time.asctime([tuple]) 将gmtime()或localtime()函数返回的时间元组,转换为'Mon Jan 1 12:00:00 2019'格式的字符串。如果省略入参secs,就会使用当前时间。
time.gmtime([secs]) 将从“纪元开始”计算的秒数形式的时间,转换为UTC时间,返回为struct_time对象。如果省略入参secs,就会使用当前时间。
time.localtime([secs]) 将从“纪元开始”计算的秒数形式的时间,转换为本地时区时间,返回为struct_time对象。如果省略入参secs,就会使用当前时间。
time.strftime(format [,tm]) 将一个struct_time格式的时间,转换为format定义的字符串形式。 format格式说明
time.strptime(string [,format]) 解析一个代表时间的字符串,然后返回一个struct_time对象。format格式默认为'%a %b %d %H:%M:%S %Y'。如果不能解析字符串,就会引发ValueError异常。 format格式说明
time.sleep(secs) 让当前进程进入睡眠状态并持续secs秒钟,secs是一个浮点数。
time.tzset() 基于UNIX上TZ环境变量的值重置时区设置。

● format 格式说明

指令 含义 指令 含义
%Y 年(四位数) %c 地区的日期时间完整表示,如:'Sat Jan 1 00:00:00 2000 '
%y 年(2位数) %x 本地区的日期表示,如:'12/31/99'
%m 月(01~12) %X 本地区的时间表示,如:'01:02:03'
%d 日(01~31) %a 地区缩写形式的星期几字符串
%H 时(00~23) %A 地区完整的星期几字符串
%I 时(01~12) %b 地区缩写形式的月份字符串
%M 分(00~59) %B 地区完整形式的月份字符串
%S 秒(00~59) %Z 时区名称(如不存在则为空字符串)
%p 上午或下午(AM / PM) %% 百分号字符
%w 星期几(0~6),0表示星期天    
%j 一年中第几天(001~366)    
%U 一年中第几周(00~53),星期天为首日    
%W 一年中第几周(00~53),星期一为首日    

返回目录

Python语法速查: 16. 时间日期处理的更多相关文章

  1. Python语法速查:目录

    1. 数据类型与内置函数 2. 列表.元组.字典.集合操作 3. 字符串格式化 4. 字符串常用操作 5. 运算符.math模块.表达式 6. 循环与迭代 7. 函数基础 8. 类与对象 9. 函数进 ...

  2. Python语法速查: 4. 字符串常用操作

    返回目录 (1)字符串常用方法 Python3中,字符串全都用Unicode形式,所以省去了很多以前各种转换与声明的麻烦.字符串属于序列,所有序列可用的方法(比如切片等)都可用于字符串. 注意:字符串 ...

  3. Python语法速查: 13. 操作系统服务

    返回目录 本篇索引 (1)sys模块 (2)os模块 (3)与Windows相关模块 (4)subprocess模块 (5)signal模块 (1)sys模块 sys模块用于Python解释器及其环境 ...

  4. Python语法速查: 12. 文件与输入输出

    返回目录 (1)文件基本操作 ● 文件常用操作 内置函数或方法 描述 open(name [,mode [,buffering]]) 内置函数.用来打开文件,返回一个文件对象(file对象).详见下述 ...

  5. Python语法速查: 3. 字符串格式化

    返回目录 (1)简易字符串格式化 字符串属于不可变序列,只能生成新的,不能改变旧的.“字符串格式化”有点像以前C语言的sprintf,可以将若干变量代入格式化的字符串,生成一个符合要求的新字符串. 转 ...

  6. Python语法速查: 14. 测试与调优

    返回目录 本篇索引 (1)测试的基本概念 (2)doctest模块 (3)unittest模块 (4)调试器和pdb模块 (5)程序探查 (6)调优与优化 (1)测试的基本概念 对程序的各个部分建立测 ...

  7. Python语法速查: 20. 线程与并发

    返回目录 本篇索引 (1)线程基本概念 (2)threading模块 (3)线程间同步原语资源 (4)queue (1)线程基本概念 当应用程序需要并发执行多个任务时,可以使用线程.多个线程(thre ...

  8. Python语法速查: 15. 常用数据结构

    返回目录 本篇索引 (1)array (2)bisect (3)deque (4)defaultdict (5)namedtuple (6)heapq (7)itertools (1)array ar ...

  9. Python语法速查: 7. 函数基础

    返回目录 (1)函数基本 ● 函数是第一类对象 Python中万物皆对象,所有对象都是第一类的(first class),函数也不例外,也是第一类对象.既然是对象,那就可以当作普通的对象数据处理,比如 ...

随机推荐

  1. HDU1847 Good Luck In CET4 Everybody

    大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考 ...

  2. CF600E Lomsat gelral (启发式合并)

    You are given a rooted tree with root in vertex 1. Each vertex is coloured in some colour. Let's cal ...

  3. ZOJ 3195 Design the city (LCA 模板题)

    Cerror is the mayor of city HangZhou. As you may know, the traffic system of this city is so terribl ...

  4. WY 2019 人工智能数学基础视频教程

    ├─01.第一阶段:AI数学基石 │ ├─01.第一章:线性代数 │ │ │ ]AI Math_[第1章]线性代数v2 .pdf │ │ │ │ │ └─视频 │ │ 01_本章概述.mp4 │ │ ...

  5. socket AcceptAsync方法的使用

    AcceptAsync与Accept很大的不一样 Accept是一个同步 阻塞的已经封装好底层的方法 AcceptAsync是一个异步 非阻塞未封装的底层连接入口,需要手动填入连接代码用于优化sock ...

  6. Java mysql连接

    public List<String> getDBTable(String tableName) { List<String> columns = new ArrayList& ...

  7. Net Core 基于AngleSharp的HTML转实体工具

    最近这几天在采集一些房产信息网站的二手房产数据.采用的是.net core 2.2+AngleSharp做的,放在自己服务器上跑着玩.写着写着,发现好麻烦.原因如下 部分代码如下图 1.每个节点都要手 ...

  8. 【朝花夕拾】Android多线程之(三)runOnUiThread篇——程序猿们的贴心小棉袄

    runOnUiThread()的使用以及原理实在是太简单了,简单到笔者开始都懒得单独开一篇文章来写它.当然这里说的简单,是针对对Handler比较熟悉的童鞋而言的.不过麻雀虽小,五脏俱全,runOnU ...

  9. Web基础了解版03-jQuery

    jQuery jQuery,顾名思义,也就是JavaScript和查询(Query)极大地简化了JavaScript开发人员遍历HTML文档.操作DOM.处理事件.执行动画和开发Ajax. jQuer ...

  10. 解决zabbix监控因php问题导致图形界面中文乱码方法

    解决因编译php中添加了-enable-gd-jis-conv选项导致Zabbix监控系统图形界面中文乱码问题 现象: php编译参数: 说明: 如果PHP编译时启用–enable-gd-jis-co ...