python的时间模块

参考


判断是否是闰年:calendar模块


1、calendar模块isleap(年份)函数

import calendar
print(calendar.isleap(2022))

2、闰年规律

闰年:400整数倍,或4的整数倍但不是100的整数倍

if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):

datetime模块


datetime类


1、定义:

class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)


2、自己构造日期时间datetime对象:

  • 必须含有的参数:year,month,day
  • 创造datetime库里datetime类的对象obj1:datetime_obj = datetime.datetime(2022,3,13,23,50,10, 1000)

3、获得当前日期时间

datetime_obj.now()
>datetime.datetime(2022, 3, 14, 0, 35, 25, 445048)

4、分别获得datetime_obj的年月日时分秒

print(datetime_obj.year, datetime_obj.month, datetime_obj.day, datetime_obj.hour, datetime_obj.minute, datetime_obj.second, datetime_obj.microsecond)
2022 3 13 23 50 10 1000

5、格式化输出日期时间

datetime_obj.isoformat()
'2022-03-13T23:50:10.001000'
datetime_obj.strftime('%Y-%m-%d %H:%M:%S.%f')
'2022-03-13 23:50:10.001000'

datetime类的timetuple()方法:返回time.struct_time

在这里插入图片描述
属性值的获取方式有两种:

  • 可以把它当做一种特殊的有序不可变序列通过 下标/索引 获取各个元素的值,如t[0]
  • 也可以通过 .属性名 的方式来获取各个元素的值,如t.tm_year。

当前datetime是一年中的第几天struct_time1.tm_yday

datetime_obj = datetime_obj.now()
struct_time1 = datetime_obj.timetuple()
struct_time1
>time.struct_time(tm_year=2022, tm_mon=3, tm_mday=14, tm_hour=0, tm_min=43, tm_sec=7, tm_wday=0, tm_yday=73, tm_isdst=-1)

struct_time1.tm_yday
>73

某日期是星期几

now = datetime.datetime.now()
# 1、范围为[1,7]
now.isoweekday()---->1
# 2、范围为[0,6]
now.weekday() ---->0
# 2、范围为[0,6]
now.timetuple().tm_wday  ----->0

timedelta类:对两datetime求差值


1、定义

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, hours=0, weeks=0)

2、两datetime_obj相减,得到timedelta对象

datetime_obj1 = datetime.datetime(2022,3,12,23,50,10, 1000)
datetime_obj2 = datetime.datetime(2021,3,11,23,50,8, 1000)
timedelta_obj = (datetime_obj1 - datetime_obj2)

timedelta_obj
> datetime.timedelta(days=366, seconds=2)

3、timedelta对象得到天/秒数差

  • 返回真正的天数差:timedelta_obj.days
  • 返回对应时分秒的秒数差不算天数timedelta_obj.seconds
  • 返回真正秒数差timedelta_obj.total_seconds()
timedelta_obj
> datetime.timedelta(days=366, seconds=2)
timedelta_obj.total_seconds()
>31622402.0

timedelta类:对初始datetime加减


可同时改变多个属性,只能改变:

  • days:天数; weeks:周数; seconds:秒数
datetime_obj = datetime.datetime(2022,1,1,12,50,10,1000)

datetime_obj + datetime.timedelta(days = 1)
>datetime.datetime(2022, 1, 2, 12, 50, 10, 1000)

datetime_obj + datetime.timedelta(weeks = 1)
>datetime.datetime(2022, 1, 8, 12, 50, 10, 1000)

datetime_obj + datetime.timedelta(seconds = 1)
>datetime.datetime(2022, 1, 1, 12, 50, 11, 1000)

datetime_obj + datetime.timedelta(days=-1, seconds = -1)
>datetime.datetime(2021, 12, 31, 12, 50, 9, 1000)


应用

1、判断今天是今年的第几天


1.1、不使用模块

def func1():
    date = time.localtime();
    year, month, day = date[:3]
    month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    # 闰年:400整数倍,或4的整数倍但不是100的整数倍
    if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
        month_days[1] = 29
    today_days_sum = sum(month_days[:month-1] , day) # sum([]) = 0单,独考虑1月都无所谓
    return today_days_sum

1.2 使用模块

now = datetime.datetime.now()
now.timetuple().tm_yday
>73

2、某year的第n个周五是几月几号

  • 知道第1个周五是几月几号
  • 用起始周五日期,减去week-1周
    在这里插入图片描述
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunMoonStar_c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值