java 某年某月中第几周 开始时间和结束时间_python时间模块

本文介绍了如何使用Python的datetime模块来获取当前、本周、本月、上周、上月的时间信息,包括年份、月份、开始时间与结束时间。文章提供了相关时间函数的封装示例。
摘要由CSDN通过智能技术生成

获取当日、本周、本月、昨日、上周、上月时间

    今天给大家分享下使用python的datetime时间模块封装几个常用的时间函数,比如获取今天、当日、本周、本月、上周、上月时间,返回值是一个字典,其中包括年份、月份、开始时间、结束时间、特定日期。

如果大家觉得文章有用,请点赞收藏哦。

    简单介绍下 datetime,它是基于time进行了封装,提供了更多的实用的函数,datetime的接口更加的直观,更容易调用。

datetime:同时有时间与日期

timedelta:表示时间间隔,即两个时间点的间隔:主要用于计算时间的跨度

tzinfo: 时区相关的信息

date : 只关注日期

    时间格式对照表

%a 本地的星期缩写%A 本地的星期全称%b 本地的月份缩写%B 本地的月份全称%c 本地的合适的日期和时间表示形式%d 月份中的第几天,类型为decimal number(10进制数字),范围[01,31]%f 微秒,类型为decimal number,范围[0,999999],Python 2.6新增%H 小时(24进制),类型为decimal number,范围[00,23]%I 小时(12进制),类型为decimal number,范围[01,12]%j 一年中的第几天,类型为decimal number,范围[001,366]%m 月份,类型为decimal number,范围[01,12]%M 分钟,类型为decimal number,范围[00,59]%p 本地的上午或下午的表示(AM或PM),只当设置为%I(12进制)时才有效%S 秒钟,类型为decimal number,范围[00,61](60和61是为了处理闰秒)%U 一年中的第几周(以星期日为一周的开始),类型为decimal number,范围[00,53]。在度过新年时,直到一周的全部7天都在该年中时,才计算为第0周。只当指定了年份才有效。%w 星期,类型为decimal number,范围[0,6],0为星期日%W 一年中的第几周(以星期一为一周的开始),类型为decimal number,范围[00,53]。在度过新年时,直到一周的全部7天都在该年中时,才计算为第0周。只当指定了年份才有效。%x 本地的合适的日期表示形式%X 本地的合适的时间表示形式%y 去掉世纪的年份数,类型为decimal number,范围[00,99]%Y 带有世纪的年份数,类型为decimal number%Z 时区名字(不存在时区时为空)%% 代表转义的"%"字符 具体代码
import datetimedef get_current_day():    '''    当日    :return:    '''    end_time = datetime.date.today()    year = end_time.strftime("%Y")    month = end_time.strftime("%m")    day = end_time.strftime("%d")    params = {        "year": year,        "month": month,        "day": day,        "current_date": f"{year}-{month}-{day}"    }    return paramsdef get_current_week():    '''    当周    :return:    '''    start_time, end_time = datetime.date.today(), datetime.date.today()    one_day = datetime.timedelta(days=1)    while start_time.weekday() != 0:        start_time -= one_day    while end_time.weekday() != 6:        end_time += one_day    start_year = start_time.strftime("%Y")    start_month = start_time.strftime("%m")    start_day = start_time.strftime("%d")    year = end_time.strftime("%Y")    month = end_time.strftime("%m")    end_day = end_time.strftime("%d")    params = {        "start_year": start_year,  # 开始年份        "start_month": start_month,  # 开始月份        "start_day": start_day,  # 开始日期        "start_date": f"{start_year}-{start_month}-{start_day}",  # 开始日期        "end_year": year,  # 结束年份        "end_month": month,  # 结束月份        "end_day": end_day,  # 结束日期        "end_date": f"{year}-{month}-{end_day}"  # 结束日期    }    return paramsdef get_current_month():    '''    当月    当前时间的月份首日与最后一天    :return:    '''    today = datetime.date.today()    year, month = today.year, today.month    end = datetime.datetime(year, month + 1, 1) - datetime.timedelta(days=1)    params = {        "year": year,        "month": month,        "start_day": "01",        "start_date": f"{year}-{month}-01",        "end_day": f"{end.day}",        "end_date": f"{year}-{month}-{end.day}",    }    return paramsdef get_last_day():    '''    昨天    :return:    '''    d = datetime.date.today()    one_day = datetime.timedelta(days=1)    end_time = d - one_day    year = end_time.strftime("%Y")    month = end_time.strftime("%m")    day = end_time.strftime("%d")    params = {        "year": year,        "month": month,        "day": day,        "last_date": f"{year}-{month}-{day}"    }    return paramsdef get_last_week():    '''    上周    :return:    '''    d = datetime.date.today()    days_count = datetime.timedelta(days=d.isoweekday())    end_time = d - days_count    six_days = datetime.timedelta(days=6)    start_time = end_time - six_days    start_year = start_time.strftime("%Y")    start_month = start_time.strftime("%m")    start_day = start_time.strftime("%d")    year = end_time.strftime("%Y")    month = end_time.strftime("%m")    end_day = end_time.strftime("%d")    params = {        "start_year": start_year,        "start_month": start_month,        "start_day": start_day,        "start_date": f"{start_year}-{start_month}-{start_day}",        "year": year,        "month": month,        "end_day": end_day,        "end_date": f"{year}-{month}-{end_day}",    }    return params# 上月def get_last_month():    d = datetime.date.today()    days_count = datetime.timedelta(days=d.day)    end_time = d - days_count    year = end_time.strftime("%Y")    month = end_time.strftime("%m")    params = {        "year": year,        "month": month,        "start_day": "01",        "start_date": f"{year}-{month}-01",        "end_day": f"{end_time.day}",        "end_date": f"{year}-{month}-{end_time.day}",    }    return paramsif __name__ == '__main__':    print('当日', get_current_day())    print('当周', get_current_week())    print('当月', get_current_month())    print('昨日', get_last_day())    print('上周', get_last_week())    print('上月', get_last_month())

41601fef41206e2e1f3b6cac5a65d716.png

a83049458a3c622e4163500822503efd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值