Python常用标准库之datetime模块

首先我们导入模块,如下:

import datetime

datetime模块提供了五个常用类:date、time、datetime、timedelta、tzinfo,接下来我们对这五个常用类进行说明。

date类 

date类包含三个参数,分别为year,month,day,返回格式为year-month-day。

date对象表示理想化日历中的日期(年、月和日), 公历1年1月1日被称为第一天,依次往后推。

其中用户创建时间的类方法如下:

import datetime

print("今天的日期是:",datetime.date.today())     # 今日的日期

print("使用时间戳创建的日期:",datetime.date.fromtimestamp(1234567896))   #  使用时间戳创建日期

print("使用公历序数创建的日期:",datetime.date.fromordinal(1))    # 使用公历序数创建的日期

# 结果如下:

# 今天的日期是: 2020-08-31
# 使用时间戳创建的日期: 2009-02-14
# 使用公历序数创建的日期: 0001-01-01

 对象的属性及方法如下:

import datetime

today = datetime.date(year=2020,month=8,day=31)   #  使用参数创建日期

print('date对象的年份:', today.year)    

print('date对象的月份:', today.month)   

print('date对象的日:', today.day)  

print("date对象的struct_time结构为:",today.timetuple())

print("返回当前公历日期的序数:",today.toordinal())   #  与fromordinal函数作用相反

print("当前日期为星期(其中:周一对应0):{}".format(today.weekday()))

print("当前日期为星期(其中:周一对应1):{}".format(today.isoweekday()))

print("当前日期的年份、第几周、周几(其中返回为元组):",today.isocalendar())

print("以ISO 8601格式‘YYYY-MM-DD’返回date的字符串形式:",today.isoformat())

print("返回一个表示日期的字符串(其格式如:Mon Aug 31 00:00:00 2020):",today.ctime())

print("指定格式为:",today.strftime("%Y/%m/%d"))

print("替换后的日期为:",today.replace(2019,9,29))

结果如下:

date对象的年份: 2020
date对象的月份: 8
date对象的日: 31
date对象的struct_time结构为: time.struct_time(tm_year=2020, tm_mon=8, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=244, tm_isdst=-1)
返回当前公历日期的序数: 737668
当前日期为星期(其中:周一对应0):0
当前日期为星期(其中:周一对应1):1
当前日期的年份、第几周、周几(其中返回为元组): (2020, 36, 1)
以ISO 8601格式‘YYYY-MM-DD’返回date的字符串形式: 2020-08-31
返回一个表示日期的字符串(其格式如:Mon Aug 31 00:00:00 2020): Mon Aug 31 00:00:00 2020
指定格式为: 2020/08/31
替换后的日期为: 2019-09-29

其中,格式化的表达式如下:

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

time类 

time类包含六个参数,分别为hour,minute,second,microsecond,tzinfo,fold,返回格式为hour:minute:second(.microsecond)。常用的参数有:hour、minute、second三个。

其对象的属性和方法如下:

import datetime

create_time = datetime.time(hour=11,minute=18,second=31)   #  使用参数创建日期

print('create_time对象的小时为:', create_time.hour)    

print('create_time对象的分钟为:', create_time.minute)   

print('create_time对象的秒数为:', create_time.second) 

print("返回create_time的字符串形式:",create_time.isoformat())

print("指定格式为:",create_time.strftime("%H/%M/%S"))

print("替换后的时间为:",create_time.replace(20,9,29))

结果如下:

create_time对象的小时为: 11
create_time对象的分钟为: 18
create_time对象的秒数为: 31
返回create_time的字符串形式: 11:18:31
指定格式为: 11/18/31
替换后的日期为: 20:09:29

datetime类 

datetime类可以看作date和time类的合体,其包含了这两个类中的全部参数,其中创建datetime类的类方法如下:

import datetime

print("现在的时间是:",datetime.datetime.today())

print("返回现在的时间是:",datetime.datetime.now())

print("当前UTC日期和时间是:",datetime.datetime.utcnow())

print("对应时间戳的日期和时间是:",datetime.datetime.fromtimestamp(1234567896))

print("对应UTC时间戳的日期和时间是:",datetime.datetime.utcfromtimestamp(1234567896))

print("公历序列对应的日期和时间是:",datetime.datetime.fromordinal(1))

print("日期和时间的合体为:",datetime.datetime.combine(datetime.date(2020, 8, 31), datetime.time(12, 12, 12)))

结果如下:

现在的时间是: 2020-08-31 11:32:10.438292
返回现在的时间是: 2020-08-31 11:32:10.439289
当前UTC日期和时间是: 2020-08-31 03:32:10.439289
对应时间戳的日期和时间是: 2009-02-14 07:31:36
对应UTC时间戳的日期和时间是: 2009-02-13 23:31:36
公历序列对应的日期和时间是: 0001-01-01 00:00:00
日期和时间的合体为: 2020-08-31 12:12:12

对象的属性和方法如下:

import datetime

now = datetime.datetime(2020,8,31,12,10,10)

print("年为:",now.year)

print("月为:",now.month)

print("日为:",now.day)

print("小时为:",now.hour)

print("分钟为:",now.minute)

print("秒数为:",now.second)

print('当前日期为:', now.date() )

print('当前时间:', now.time() )

print("返回struct_time为",now.timetuple())   #  和date一样

print("返回UTC的struct_time为",now.utctimetuple())

print("返回的公历序列数为:",now.toordinal())   #  和date一样

print("返回标准日期格式为:",now.isoformat())   #  和date一样

print("返回的周几(1表示周一):",now.isoweekday())    #  和date一样

print("返回的周几(0表示周一):",now.weekday())    #  和date一样  

print("now.isocalendar():", now.isocalendar())  #  和date一样

print("now.ctime():",now.ctime())   #  和date一样

print("格式化时间为:",now.strftime('%Y/%m/%d %H:%M:%S'))   #  把日期按照format指定的格式进行格式化

print(datetime.datetime.strptime("2020/12/29 8:8:00",'%Y/%m/%d %H:%M:%S'))     #   将字符串格式转换为日期格式

结果如下:

年为: 2020
月为: 8
日为: 31
小时为: 12
分钟为: 10
秒数为: 10
当前日期为: 2020-08-31
当前时间: 12:10:10
返回struct_time为 time.struct_time(tm_year=2020, tm_mon=8, tm_mday=31, tm_hour=12, tm_min=10, tm_sec=10, tm_wday=0, tm_yday=244, tm_isdst=-1)
返回UTC的struct_time为 time.struct_time(tm_year=2020, tm_mon=8, tm_mday=31, tm_hour=12, tm_min=10, tm_sec=10, tm_wday=0, tm_yday=244, tm_isdst=0)
返回的公历序列数为: 737668
返回标准日期格式为: 2020-08-31T12:10:10
返回的周几(1表示周一): 1
返回的周几(0表示周一): 0
now.isocalendar(): (2020, 36, 1)
now.ctime(): Mon Aug 31 12:10:10 2020
格式化时间为: 2020/08/31 12:10:10
2020-12-29 08:08:00

timedelta类 

timedelta类代表两个datetime对象之间的时间差,即两个日期或者日期时间之差。支持参数:weeks、days、hours、minutes、seconds、milliseconds、microseconds。但是据官方文档说其内部只存储days、seconds 和 microseconds,其他单位会做对应的时间转换。

import datetime

now = datetime.date.today()

before_5_date = now + datetime.timedelta(days=-5)

print("now date is:",now)   # 表示现在的日期

print("\n")

print("before five days date is:",before_5_date)   # 表示五天前的日期

now_time = datetime.datetime.now()

print(now_time)

after_5_hours_10_minutes = now_time + datetime.timedelta(hours=5,minutes=10)

print(after_5_hours_10_minutes)

结果如下:
now date is: 2020-08-31
before five days date is: 2020-08-26
2020-08-31 13:14:53.862049
2020-08-31 18:24:53.862049

 

 

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值