python 日期的周数_术业有专攻:日期时间模块datetime

本文约3450字,建议阅读时间17~20分钟

关键字:python,日期时间操作,datetime,timedelta,date,time,datetime

python中处理时间日期相关的主要有标准库datetime(时间日期操作)、time(时间访问和转换)和calendar(日历相关操作)等,第三方库dateutil(时区扩展和解析支持)等,本文主要介绍datetime模块。

一、两个常量

datetime.MINYEAR

#返回1

datetime.MAXYEAR

#返回9999

二、可用的类型

包含日期类date、日期时间类datetime、时间类time(没有闰秒的概念)、时间间隔类timedelta、时区类tzinfo、timezone,它们之间的关系如下:

类型

父类

子类

date

object

datetime

datetime

date

-

time

object

-

timedelta

object

-

timezone

tzinfo

-

tzinfo

object

timezone

 其中:

日期类属性:year、month、day;

时间类属性:hour、minute、second、microsecond(无返回0)、tzinfo(无返回None);

日期时间类属性:year、month、day、hour、minute、second、microsecond(无返回0)、tzinfo(无返回None);

三、时间间隔类timedelta

1、实例的生成

from datetime import timedelta

delta1=timedelta(days=5,seconds=30,microseconds=234,milliseconds=3,minutes=3,hours=2,weeks=2)

delta1

#返回datetime.timedelta(19, 7410, 3234)

包含参数days、seconds、microseconds(百万分之一秒)、milliseconds(毫秒)、minutes、hours、weeks。所有参数都默认为0,且可以是整数或者浮点数,也可以是正数或者负数,并且前三个参数之后的参数需要转换为前三个参数,比如:

1millisecond=1000microsecond

1minutes=60seconds

1hours=3600seconds

1weeks=7days

且转换后的前三个参数具有如下限制:

-999999999 <= days <= 999999999

0 <= seconds < 3600*24

0 <= microseconds < 1000000

例如:

delta2=timedelta(microseconds=-1)

delta2

#datetime.timedelta(-1, 86399, 999999),可理解为倒回0.000001秒

2、类属性

(1)获取时间间隔的最小值

timedelta.min

#返回datetime.timedelta(days=-999999999)

(2)获取时间间隔的最小值

timedelta.max

#返回datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)

获取两个时间间隔的最小间隔单位

timedelta.resolution

#返回timedelta(microseconds=1)

3、实例属性

days(间隔天数)、seconds(间隔秒数)、microseconds(间隔微秒数)

delta1.days

#返回19

4、实例方法

期间总的间隔秒数:total_seconds()

from datetime import datetime

dt1=datetime(2020,7,21,15,20,15)

dt2=datetime(2020,7,20,12,20,15)

(dt1-dt2).seconds

#返回10800

(dt1-dt2).total_seconds()

#返回97200,注意与seconds的区别!

5、其他

timedelta类型数据支持四则运算及比较运算,如果出现浮点数则四舍五入到最近的那个时间间隔,它还可以通过str、repr转换为字符串(注:两者返回的字符串不同!)。

str(delta1)

#返回'19 days, 2:03:30.003234'

repr(delta1)

#返回'datetime.timedelta(19, 7410, 3234)'

四、日期类date

1、实例的生成

from datetime import date

dt=date(year=2020,month=7,day=24)

#返回datetime.date(2020,7,24)

2、类方法

(1)获取当天的日期date.today()

#等于date.fromtimestamp(time.time())

(2)根据天数得到日期(1表示1年1月1日)

date.fromordinal(737630)

#返回datetime.date(2020, 7, 24)

#date.fromordinal(dt.toordinal())=dt

(3)将日期字符串转换为日期(python3.7新增)

date.fromisoformat(‘2020-07-24’)

#返回datetime.date(2020, 7, 24)

将日期转换为日期字符串(python3.7新增)

date.isoformat(dt)

#返回’2020-07-24’

(4)通过返回给定年、周、天的日历日期(python3.8新增)

date.fromisocalendar(1,2,1)

#返回datetime.date(1,1,8)

返回日期的年、周、天数(python3.8新增)

date.isocalendar(dt)

#返回(2020, 30, 5)

3、类属性

(1)最小日期值

date.min

#返回date(1,1,1)

(2)最大日期值

date.max

#返回date(9999,12,31)

(3)最小日期间隔

date.resolution

#datetime.timedelta(days=1)

4、实例属性

year(年)、month(月)、day(日)

dt.month

#返回7

5、实例方法

(1)替换日期的某年某月某日

date.replace(year,month,day)

dt.replace(month=8,day=1)

#返回datetime.date(2020,8,1)

(2)返回日期的时间范式

dt.timetuple()

#返回time.struct_time(tm_year=2020, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0,

tm_sec=0, tm_wday=4, tm_yday=206, tm_isdst=-1),其中分别为年、月、日、时、分、秒、当周第几天(星期一为0)、当年第几天、是否夏时制,返回time.struct_time对象;

(3)计算日期的顺序天数(1年1月1日为1)

dt.toordinal()

#返回737630

(4)计算日期周第几天

dt.weekday()

#返回4(注:星期一为0,星期天为6)

dt.isoweekday()

#返回5,(注:星期一为1,星期天为7)

(5)返回标准化日历年数、周数、周几

dt.isocalendar()

#(2020, 30, 5)

#注:每年开始的第一个周四所在的周为第一周

(6)返回日期的字符串

dt.isoformat()

#返回’2020-07-24’

dt.__str__()

#返回’2020-07-24’

dt.ctime()

#返回'Fri Jul 24 00:00:00 2020'

#等于time.ctime(time.mktime(dt.timetuple()))

dt.strftime(‘%Y-%m-%d’)

#返回’2020-07-24’

dt.__format__()

#返回’2020-07-24’

五、时间类time

1、实例的创建

from datetime import time

tm=time(hour=16,minute=16,second=16,microsecond=16,tzinfo=None,fold=0)

tm

#返回datetime.time(16,16,16,16)

#tzinfo为时区对象,fold为是否有重叠

2、类属性

(1)时间的最小值

time.min

#返回datetime.time(0, 0)

(2)时间最大值

time.max

#返回datetime.time(23, 59, 59, 999999)

(3)时间的最小间隔

time.resolution

#返回timedelta(microseconds=1)

3、实例属性

hour(时)、minute(分)、second(秒)、microsecond(微秒)、tzinfo(时区信息)等

tm.second

#返回16

4、类方法

(1)将时间字符串转换为时间

time.fromisoformat(‘16:16:16.000016’)

#返回datetime.time(16,16,16,16)

将时间转换为字符串

time.isoformat(tm)

#'16:16:16.000016'

5、实例方法

(1)替换时间相应的属性

tm.replace(hour=18,minute=18,second=18,microsecond=18)

#返回datetime.time(18,18,18,18)

(2)将时间转换为字符串

tm.isoformat(timespec=’auto’)

#返回'16:16:16.000016'

#timespec参数还可以是如下值:

hours:返回’HH’形式

minutes:返回’HH:MM’形式

seconds:返回’HH:MM:SS’形式

milliseconds:返回’HH:MM:SS.sss’形式

microseconds:返回’HH:MM:SS.ffffff’形式

tm.__str__()

#返回'16:16:16.000016'

tm.strftime(‘%H:%M:%S.%f’)

#返回'16:16:16.000016'

tm.__format__(‘%H:%M:%S.%f’)

#返回'16:16:16.000016'

六、日期时间类datetime

1、实例的创建

from datetime import datetime

dttm=datetime(year=2020,month=7,day=31,hour=8,minute=8,second=8,microsecond=8,tzinfo=None,fold=0)

dttm

#返回datetime.datetime(2020, 7, 31, 8, 8, 8, 8)

2、类方法

(1)获取当前的日期时间

datetime.today()

#返回当前的年、月、日、时、分、秒、微妙

#等于datetime.fromtimestamp(time.time())

datetime.now(tz=None)

(2)将时间戳转换为日期时间

datetime.fromtimestamp(timestamp)

datetime.fromtimestamp(1596154088.000008)

#返回datetime.datetime(2020, 7, 31, 8, 8, 8, 8)

(3)将序数转换为日期时间(注:只返回日期,时间为0)

datetime.fromordinal(737637)

#返回datetime.datetime(2020, 7, 31, 0, 0)

(5)将日期和时间合并

from datetime import date,time

dt=date(2020,7,31)

tm=time(8,8,8,8)

datetime.combine(dt,tm)

#返回datetime.datetime(2020, 7, 31, 8, 8, 8, 8)

(5)将字符串转换为日期时间

datetime.fromisoformat(‘2020-07-31 13:50:11.006’)

#返回datetime.datetime(2020,7,31,13,50,11,6000)

#python3.7新增

将日期时间转换为字符串

datetime.isoformat(dttm)

#返回’2020-07-31 08:08:08.000008’

(6)将日历年、周、天转换为日期时间

datetime.fromisocalendar(2020,31,5)

#返回datetime.datetime(2020,7,31,0,0)

将日期时间转换为日历年、周、天

datetime.isocalendar(dttm)

#返回(2020,31,5)

(7)将字符串转换成指定格式的日期时间

datetime.strptime(‘2020-07-31 15:11:11.111’,’%Y-%m-%d %H:%M:%S.%f’)

#返回datetime.datetime(2020,7,31,15,11,11,111000)

3、类属性

(1)日期时间的最小值

datetime.min

#返回datetime.datetime(1, 1, 1, 0, 0)

(2)日期时间的最大值

datetime.max

#返回datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)

(3)日期时间间隔的最小值

datetime.resolution

#返回timedelta(microsecond1=1)

4、实例属性

year、month、day、hour、minute、second、microsecond、tzinfo等,含义同date类、time类。

5、实例方法

(1)获取日期时间的年月日,返回date类型

dttm.date()

#返回datetime.date(2020,7,31)

(2)获取日期时间的时分秒微妙,返回time类型

dttm.time()

#返回datetime.time(8, 8, 8, 8)

dttm.timetz()

#返回datetime.time(8, 8, 8, 8)

(3)替换日期时间的相应属性

dttm.replace(hour=18,minute=18,second=18,microsecond=18)

#返回datetime.datetime(2020, 7, 31, 18, 18, 18, 18)

(4)返回日期时间的time.struct_time类型

dttm.timetuple()

#返回time.struct_time(tm_year=2020, tm_mon=7, tm_mday=31, tm_hour=8, tm_min=8,

tm_sec=8, tm_wday=4, tm_yday=213, tm_isdst=-1)

(5)返回日期时间的序数

dttm.toordinal()

#返回737637

(6)返回日期时间的时间戳

dttm.timestamp()

#返回1596154088.000008

#与time.time()类似

(7)返回日期时间的周几

dttm.weekday()

#返回4

#星期一为0,星期天为6

dttm.isoweekday()

#返回5

#星期一为1,星期天为7

(8)将日期时间转换为指定形式字符串

dttm.isoformat(sep=' ',timespec='auto')

#返回'2020-07-31 08:08:08.000008'

#sep参数为日期和时间的分割符,默认为’T’

#timespec参数还包含hours、minutes、seconds、milliseconds、microseconds,含义与date实例的该方法一致

dttm.__str__()

#返回'2020-07-31 08:08:08.000008'

#等于dttm.isoformat(‘ ’)

dttm.ctime()

#返回'Fri Jul 31 08:08:08 2020'

#等于time.ctime(time.mktime(dttm.timetuple()))

dttm.strftime('%Y-%m-%d %H:%M:%S.%f')

#返回'2020-07-31 08:08:08.000008'

dttm.__format__('%Y-%m-%d %H:%M:%S.%f')

#返回'2020-07-31 08:08:08.000008'

(完)

9186b38ff2210c05cfd592b0c13e23c4.png

欢迎关注【lambda派】!

相关阅读:

语法典经谱:迭代器VS生成器

语法典经谱:类的定义

语法典经谱:功能函数的定义

语法典经谱:集合基本操作

语法典经谱:字典基本操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值