• python处理日期参数:把字符串转为datetime对象、月份增减等


    最近在写脚本时,遇到了一个关于日期参数的处理问题,大致要求如下

    接口传入2个日期,如:开始月份2022-03,结束月份2022-04

    我需要获取到如下2个参数:

    开始日期前一个月的21号,即2022-02-21 (字符串类型)

    结束日期后一个月的20号,即2022-05-21(字符串类型)

    因为前端传来的参数是字符串类型,例如"2022-03",我们不能直接对字符串进行加减操作,所以我第一想到的是先把字符串格式的日期转换为日期对象,可以利用datetimestrptime()方法来达到这个目的

    import datetime
    from dateutil.relativedelta import relativedelta
    date1 = datetime.datetime.strptime("2022-03", "%Y-%m")  # 把字符串格式时间转为
    print("打印date1的值:", date1)
    print("打印date1的类型:", type(date1))
    
    结果如下:
    打印date1的值: 2022-03-01 00:00:00
    打印date1的类型: <class 'datetime.datetime'>

    strptime()中第一个参数为日期字符串,第二个参数为格式化符号

    例如我想把"年-月"进行转换,所以对应的格式化符号为"%Y-%m"

    可以看到,"2022-03"转换为了2022-03-01 00:00:00,默认是这个月的第一天0点

    获取到日期对象后,我想要获取到上一个月的时间,例如我想得到 2022-02-01

    这个可以通过 dateutil库的 relativedelta方法实现

    pre_date1 = date1 - relativedelta(months=1)  # 获取date1的上一个月
    print("打印pre_date1的值:", pre_date1)
    
    结果如下:
    打印pre_date1的值: 2022-02-01 00:00:00

    因为我要根据月份进行增减,所以使用months参数,如果想根据年份增减,

    可以使用years,还有诸如weeks、days、hours

    这样就获取到了上个月1号的日期对象 2022-02-01 00:00:00

    接下来我要获取 2022-02-21

    可以通过datetimetimedelta方法对日期进行偏移,往后偏移20天即可,

    然后使用strftime()方法转为字符串

    pre_date1_day = (pre_date1 + datetime.timedelta(days=+20)).strftime("%Y-%m-%d")
    print("打印pre_date1_day的值:", pre_date1_day)
    
    结果如下:
    打印pre_date1_day的值: 2022-02-21

    可以通过同样的方法获取到 2022-05-21

    其他python处理日期相关的文章

    如何在python中构造时间戳参数 

    一个日期类型接口参数的构造思路 

  • 相关阅读:
    java之day4补充
    java之day4
    JAVA之day3对象
    JAVA之DAY3
    JAVA之DAY2
    element-ui表格添加复选框及根据列表中的数据判断是否可选
    h5手机端上传多张图片(界面上的展示图片,删除图片)
    模态框-开启关闭事件
    Vue-粒子特效(vue-particles)
    网页常用代码片段-sessionStorage存储JSON
  • 原文地址:https://www.cnblogs.com/hanmk/p/16033746.html
Copyright © 2020-2023  润新知