Anders Wang


我所认识的每个人都是榜样,都有值得我去尊敬和学习的地方。


python之datetime模块

Python的时间管理模块中除了time模块外还有非常好用的datetime模块,但不得不说的是有一点非常令人困扰,因为在datetime模块中有一个time对象,而time模块本身还有一个函数叫time()。其实Datetime比time高级了不少,可以直接理解为datetime是基于time进行了封装,提供了更多实用的函数。

datetime模块定义了下面这几个类:

  • date:表示日期的类。常用的属性有year, month, day。
  • time:表示时间的类。常用的属性有hour, minute, second, microsecond。
  • datetime:表示日期时间,处理日期和时间同时出现的情况。
  • timedelta:表示时间间隔,即两个时间点之间的长度。
  • tzinfo:与时区有关的相关信息。

下面,我们分别就datetime模块下面的几个类举例说明。

datetime.date
import datetime

print('today方法:',datetime.date.today())# 返回当前日期  
print('fromtimestamp方法:',datetime.date.fromtimestamp(86400))# 返回时间戳的日期

# 输出如下:
# today方法: 2018-09-27
# fromtimestamp方法: 1970-01-02

a = datetime.date(2020,5,7)  
print('a.year:',a.year)# 返回date对象的年份  
print('a.month:',a.month)# 返回date对象的月份  
print('a.day:',a.day)# 返回date对象的日  
print('a.timetuple():',a.timetuple())# 返回date对象的时间元组  
print('a.weekday():',a.weekday())#返回周几(0-6)  
print('a.isoweekday():',a.isoweekday())#返回周几(1-7)  
print('a.isocalendar():',a.isocalendar())#返回一个元组(年份,这一年的第几周,周几)  
print('a.isoformat():',a.isoformat())#返回iso 8601格式(YYYY-MM-DD)  
print('a.ctime():',a.ctime())# 返回一个表示日期的字符串  
print('a.strftime():',a.strftime('%Y年%m月%d日'))# 返回指定格式的日期字符串  
print('a.replace():',a.replace(year = 2088,month = 11,day = 22))#替换指定年月日

# 输出如下:
# a.year: 2020
# a.month: 5
# a.day: 7
# a.timetuple(): time.struct_time(tm_year=2020, tm_mon=5, tm_mday=7, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=128, tm_isdst=-1)
# a.weekday(): 3
# a.isoweekday(): 4
# a.isocalendar(): (2020, 19, 4)
# a.isoformat(): 2020-05-07
# a.ctime(): Thu May  7 00:00:00 2020
# a.strftime(): 2020年05月07日
# a.replace(): 2088-11-22
datetime.time
import datetime  
b = datetime.time(22,33,44,1111)#4个参数分别为:时,分,秒,微秒(1微妙=10的负6次方秒)  
print('b.hour:',b.hour)#返回time对象的小时数  
print('b.minute:',b.minute)# time对象的分钟数  
print('b.second:',b.second)# time对象秒数  
print('b.microsecond:',b.microsecond) # time对象微秒数  
print('b.isoformat()',b.isoformat())#返回 ISO 8601格式:HH:MM:SS.mmmmmm  
print('b.strftime():',b.strftime('%H点%M分%S秒%f微妙'))# 返回指定的时间格式  
print('b.replace():',b.replace(hour=23))#替换指定的时间

# 输出如下:
# b.hour: 22
# b.minute: 33
# b.second: 44
# b.microsecond: 1111
# b.isoformat() 22:33:44.001111
# b.strftime(): 22点33分44秒001111微妙
# b.replace(): 23:33:44.001111
datetime.datetime
import datetime  
# 返回本地当前的时间
print('datetime.datetime.today():',datetime.datetime.today())  
#now()接收一个参数tz,也就是timezone时区,如果这个参数不存在时,它的表现等同于today()
print('datetime.datetime.now():',datetime.datetime.now())  
#utcnow()返回UTC时间
print('datetime.datetime.utcnow():',datetime.datetime.utcnow())  
#fromtimestamp()反回指定时间戳对应的时间
print('datetime.datetime.fromtimestamp():',datetime.datetime.fromtimestamp(111111111))  
#combine()用于拼接date对象和time对象
print('datetime.datetime.combine():',datetime.datetime.combine(datetime.date(2012,12,1),datetime.time(12,23,22)))  
#根据指定的格式输出日期时间
print('datetime.datetime.strptime():',datetime.datetime.strptime('2099.9.1','%Y.%m.%d'))

# 输出如下:
# datetime.datetime.today(): 2018-09-27 21:42:01.471634
# datetime.datetime.now(): 2018-09-27 21:42:01.471731
# datetime.datetime.utcnow(): 2018-09-27 13:42:01.471796
# datetime.datetime.fromtimestamp(): 1973-07-10 08:11:51
# datetime.datetime.combine(): 2012-12-01 12:23:22
# datetime.datetime.strptime(): 2099-09-01 00:00:00

d = datetime.datetime(2018,1,14,8,18,18)  
print('d.date():',d.date())# 从datetime对象中拆分出date  
print('d.time():',d.time())# 从datetime对象中拆分出time  
print('d.timetz():',d.timetz())#从datetime对象中拆分出时区属性的time  
print('d.replace(year = 2030,day = 19):',d.replace(year = 2030,day = 19))#替换  
print('d.timetuple():',d.timetuple())#返回时间元组  
print('d.weekday():',d.weekday())#周几(0-6)  
print('d.isoweekday():',d.isoweekday())#周几(1-7)  
print('d.isocalendar():',d.isocalendar())#返回一个元组(年份,这一年的第几周,周几)  
print('d.ctime():',d.ctime())#返回日期的字符串格式  
print('d.strftime():',d.strftime('%Y-%m-%d %H:%M')) #以指定格式返回日期字符串

# 输出如下:
# d.date(): 2018-01-14
# d.time(): 08:18:18
# d.timetz(): 08:18:18
# d.replace(year = 2030,day = 19): 2030-01-19 08:18:18
# d.timetuple(): time.struct_time(tm_year=2018, tm_mon=1, tm_mday=14, tm_hour=8, tm_min=18, tm_sec=18, tm_wday=6, tm_yday=14, tm_isdst=-1)
# d.weekday(): 6
# d.isoweekday(): 7
# d.isocalendar(): (2018, 2, 7)
# d.ctime(): Sun Jan 14 08:18:18 2018
# d.strftime(): 2018-01-14 08:18
datetime.timedelta

timedelta对象表示一个时间段,即两个日期 (date) 或日期时间 (datetime) 之间的差。用法如下:

import datetime  
a = datetime.date.today()  
b = datetime.datetime.now()  
print('现在日期是:',a)  
print('计算10天前的日期:',a - datetime.timedelta(days=10))  
print('现在时间是:',b)  
print('计算5天5小时之前的日期',b - datetime.timedelta(days=5,hours=5))

# 输出如下:
# 现在日期是: 2018-09-27
# 计算10天前的日期: 2018-09-17
# 现在时间是: 2018-09-27 21:10:13.414434
# 计算5天5小时之前的日期 2018-09-22 16:10:13.414434
datetime.tzinfo 该类为抽象基类,不能被直接实例化
最近的文章

匿名函数lambda

在Python中有个匿名函数特性非常的便捷和有用,用关键字lambda就可以声明一个匿名函数,所以很多时候直接称呼为lambda函数。 每次介绍新特性的时候,我们都要反问什么是lambda函数呢?因为…

Python, 技术博文详细阅读
更早的文章

python之time模块

在编程中经常需要花费大量的精力来处理日期和时间。在Python有许多关于日期时间的内置库可以帮助我们减轻不少处理时间的工作,所以这次先从time模块介绍开始。 需要注意的是在time模块中的大多数…

Python, 技术博文详细阅读
comments powered by Disqus