Python3.x datetime模块

1、时间间隔(timedelta)

指定时间长度之间计算差值

__author__ = 'realtiger'

from datetime import timedelta

a=timedelta(days=3,hours=5)
b=timedelta(hours=23.6)
c = a + b
# 最终计算结果
print(c)
# 结果中有几天(向下取整,如果你奇怪时分秒消失的话)
print(c.days)
# 结果中有多少毫秒
print(c.microseconds)
# 结果中有多少秒
print(c.seconds)
# 结果中全部换算为秒,总共有多少秒
print(c.total_seconds())
# 查看最终结果的类型
print(type(c))
# timedelta类型最大时间
print(timedelta.max)
# timedelta类型最小时间
print(timedelta.min)
# timedelta类型的精度
print(timedelta.resolution)

运行结果为:

4 days, 4:36:00
4
0
16560
362160.0
<class 'datetime.timedelta'>
999999999 days, 23:59:59.999999
-999999999 days, 0:00:00
0:00:00.000001

当时,时间的差也是没有问题的。分钟、小时可以通过计算获得。

2、日期表示(date)

date由年月日组成,年的范围是[1,9999],月的范围是[1,12],日的范围根据年月来确定参数。

__author__ = 'realtiger'

from datetime import date
import time
# date对象的最大时间
print(date.max)
# date对象的最小时间
print(date.min)
# date对象的精度,单位为天
print(date.resolution)
# 返回当前本地时间
print(date.today())
# 根据给定时间戳,返回date对象
print(date.fromtimestamp(time.time()))

运行结果为:

9999-12-31
0001-01-01
1 day, 0:00:00
2016-12-28
2016-12-28

date还提供了一些其他的实例和属性。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
__author__ = 'realtiger'

from datetime import date
import time

# 构造新的date类
new=date(2016,11,12)
# 打印当前类
print(new)
# date类中的年月日单独输出
print(new.year)
print(new.month)
print(new.day)
# 使用新的年月日替换原来的年月日属性(原属性不变)
print(new.replace(month=8))
# 确认原属性没有变化
print(new)
# 返回日期对应的time.struct_time对象
print(new.timetuple())
# 返回日期对应的Gregorian Calendar日期
print(new.toordinal())
# 返回weekday,周一是0,周二是1,以此类推
print(new.weekday())
# 同上面,区别是从1开始,周一是1,周二是2,以此类推
print(new.isoweekday())
# 返回年月日的元组
print(new.isocalendar())
# 返回格式为'YYYY-MM-DD’的字符串
print(new.isoformat())
# 自定义返回格式
print(new.strftime('%Y-%m-%d %H:%M:%S'))

运行结果为:

2016-11-12
2016
11
12
2016-08-12
2016-11-12
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=317, tm_isdst=-1)
736280
5
6
(2016, 45, 6)
2016-11-12
2016-11-12 00:00:00

同时date类也可以进行运算

__author__ = 'realtiger'

from datetime import date, timedelta

# 构造一个新的date类
new = date(2016, 11, 12)
# 可以与一个时间间隔进行相加
new = new+timedelta(days=2, hours=5, minutes=30, seconds=59)
print(new.strftime('%Y-%m-%d %H:%M:%S'))
# 也可以与时间间隔相减
new = new-timedelta(days=2, hours=5, minutes=30, seconds=59)
print(new.strftime('%Y-%m-%d %H:%M:%S'))
# 进行时间的判断
print(new > date(2016, 12, 13))
print(new < date(2016, 12, 13))
# 两个date类相减,得到一个时间间隔类型
new = new - date(2016, 12, 13)
print(new)
print(type(new))

运行结果是:

2016-11-14 00:00:00
2016-11-12 00:00:00
False
True
-31 days, 0:00:00
<class 'datetime.timedelta'>

可以看到,和时间间隔相加减的时候并没有加减时分秒,因为date类的进度是天。

3、时间表示(time)

time类表示时间,由时、分、秒、微秒以及时区组成。时的范围为[0, 23],分的范围为[0, 59],秒的范围为[0, 59],microsecond的范围为[0, 999999]

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
__author__ = 'realtiger'

from datetime import time

# time类的最大时间
print(time.max)
# time类的最小时间
print(time.min)
# time类的精度
print(time.resolution)
# 构造一个新的time类
tm=time(hour=22,minute=21,second=6)
print(tm)
# 返回新time类的时分秒以及毫秒
print(tm.hour)
print(tm.minute)
print(tm.second)
print(tm.microsecond)
# 使用新属性替换原属性(原属性不变)
print(tm.replace(hour=2,minute=6))
print(tm)
# 返回形式为"HH:MM:SS"格式的字符串
print(tm.isoformat())
# 自定义返回字符串
print(tm.strftime('%H-%M-%S'))

运行结果是:

23:59:59.999999
00:00:00
0:00:00.000001
22:21:06
22
21
6
0
02:06:06
22:21:06
22:21:06
22-21-06

4、datetime类

datetime类就是date类和time类的结合,包含date类和time类的所有信息。

__author__ = 'realtiger'

from datetime import datetime
import time

# datetime的最大时间,最小时间,精度
print(datetime.max)
print(datetime.min)
print(datetime.resolution)
# 返回本地时间
print(datetime.today())
# 返回现在的时间,可以传入时区参数
print(datetime.now())
# 返回一个当前utc的时间
print(datetime.utcnow())
# 根据时间戮创建一个datetime对象,可以传入时区
print(datetime.fromtimestamp(time.time()))
# 根据时间戮创建一个datetime对象
print(datetime.utcfromtimestamp(time.time()))
# 将格式字符串转换为datetime对象
print(datetime.strptime("2016-12-31 19:25:3", "%Y-%m-%d %H:%M:%S"))
print(type(datetime.strptime("2016-12-31 19:25:3", "%Y-%m-%d %H:%M:%S")))
# 传入date对象和time对象构造一个datetime对象
# print(datetime.combine(date(year=2017,month=5,day=1),time(20,30,58)))
# 构造一个datetime对象
dt=datetime(2016, 12, 31, 19, 35, 15)
# 返回年月日时分秒微妙
print(dt.year)
print(dt.month)
print(dt.day)
print(dt.hour)
print(dt.minute)
print(dt.second)
print(dt.microsecond)
# 返回date对象
print(dt.date())
# 返回time对象
print(dt.time())
# 替换datetime属性,原属性不变
print(dt.replace(year=2199,month=8,second=48))
# 返回日期对应的time.struct_time对象
print(dt.timetuple())
# 返回日期对应的time.struct_time对象
print(dt.utctimetuple())
# 返回日期对应的Gregorian Calendar日期
print(dt.toordinal())
# 返回weekday,从0开始
print(dt.weekday())
# 返回weekday,从1开始
print(dt.isoweekday())
# 返回年月日元组
print(dt.isocalendar())
# 返回格式化输出
print(dt.isoformat())
# 返回一个日期时间的C格式字符串
print(dt.ctime())
# 返回自定义格式化时间
print(dt.strftime('%Y-%m-%d %H:%M:%S'))

运行结果是:

9999-12-31 23:59:59.999999
0001-01-01 00:00:00
0:00:00.000001
2016-11-12 14:46:57.769252
2016-11-12 14:46:57.769251
2016-11-12 06:46:57.769251
2016-11-12 14:46:57.769252
2016-11-12 06:46:57.769252
2016-12-31 19:25:03
<class 'datetime.datetime'>
2016
12
31
19
35
15
0
2016-12-31
19:35:15
2199-08-31 19:35:48
time.struct_time(tm_year=2016, tm_mon=12, tm_mday=31, tm_hour=19, tm_min=35, tm_sec=15, tm_wday=5, tm_yday=366, tm_isdst=-1)
time.struct_time(tm_year=2016, tm_mon=12, tm_mday=31, tm_hour=19, tm_min=35, tm_sec=15, tm_wday=5, tm_yday=366, tm_isdst=0)
736329
5
6
(2016, 52, 6)
2016-12-31T19:35:15
Sat Dec 31 19:35:15 2016
2016-12-31 19:35:15

同样的,datetime也可以进行比较以及相减运算

5、格式化字符串

以下是python手册中的格式化字符串的一些关键符号。

格式字符意义
%a英语星期的简写。如星期一为Mon
%A英语星期的全写。如星期一为Monday
%b英语月份的简写。如四月份为Apr
%B英语月份的全写。如四月份为April
%cdatetime的字符串表示。(如:16/09/08 11:32:35)
%d当前时间是这个月中的第几天
%f微秒(范围[0,999999])
%H24小时制小时,范围是[0, 23]
%I12小时制小时,范围是[0, 11]
%j当前时间是当年中的第几天,范围是[001,366]
%m月份,范围是[01,12]
%M分钟,范围是[00,59]
%p上下午标志(AM或者PM)
%S秒,范围为[00,61]
%U当前时间是当年中的第几周,星期天为每周的第一天
%w当前时间是当周中的第几天,范围是[0, 6],6表示星期天
%W当前时间是当年中的第几周,星期一为每周的第一天
%x日期字符串(如:16/11/12)
%X时间字符串(如:19:35:15)
%y两个数字表示的年份
%Y四个数字表示的年份
%z与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z时区名称(如果是本地时间,返回空字符串)
%%%% => %
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值