返回目录

本篇索引

(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. 《手把手教你》系列进阶篇之4-python+ selenium自动化测试 - python几种超神操作你都知道吗?(详细教程)

    1. 简介 今天分享和讲解的超神操作,对于菜鸟来说是超神的操作,对于大佬来说也就是几个简单方法的封装和调用.这里讲解和分享这部分主要是为了培养小伙伴们和童鞋们的面向对象的开发思维,对比这样做的好处让你 ...

  2. [Cake] 3. dotnet 本地工具 cake & dotnet format

    在上一篇[Cake] 2. dotnet 全局工具 cake中介绍了通过.Net Core 2.1 的全局工具dotnet tool命令来简化cake的安装和使用.因为是全局安装,则无法适应每个项目对 ...

  3. JS基础-变量类型和类型转换

    JS 变量类型 JS中有 6 种原始值,分别是: boolean number string undefined symbol null 引用类型: 对象 数组 函数 JS中使用typeof能得到哪些 ...

  4. 什么是Java优先级队列?

    PriorityQueue是基于无界优先级队列和优先级堆构建的重要Java API之一.本文通过适当的代码示例深入了解了有关此API及其用法的一些复杂信息.另在上篇文章中我们简单地谈了下Java编译器 ...

  5. 【CV现状-3.0】"目标"是什么

    #磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...

  6. Appium(八):Appium API(二) 元素等待、元素操作

    1. 元素等待 我们在使用脚本的时候,可能会由于网络.服务器处理.电脑等原因,我们想要找的元素没有加载出来,这个时候如果直接定位就可能会报错. 这个时候我们就可以设置元素等待了. 什么叫元素等待呢? ...

  7. canves做的时钟目前已经开源

    canves做的时钟目前已经开源 git地址: https://github.com/jidanji/canves-clock/tree/1.0.1 项目截图 时流过的时间变得有颜色,其他的没有颜色.

  8. netcore 2.2 封装 AutoMapper

    在上篇中我们通过创建一个类并继承autoMapper的Profile类 public class Mappings : Profile { public Mappings() { CreateMap& ...

  9. Hive数据类型和DDL操作

    hive命令 在Linux下的命令行中直接输入如下命令,可以查看帮助信息: # hive -help 常用的如-e.-f参数. 使用-e参数,可以直接在命令行传递SQL语句进行hive表数据的查询: ...

  10. pyhton的安装,环境变量的设置,pycharm的安装下载,中文汉化和字体的设置

    1.下载pycharm https://www.7down.com/soft/336988.html 1.pycharm的汉化下载汉化包:resources_cn.jar    放到pycharm的安 ...