前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python处理日期参数:把字符串转为datetime对象、月份增减等

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

作者头像
冰霜
发布2022-04-18 15:46:42
9590
发布2022-04-18 15:46:42
举报

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

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

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

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

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

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

可以利用datetimestrptime()方法来达到这个目的

代码语言:javascript
复制
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方法实现

代码语言:javascript
复制
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()方法转为字符串

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 冰霜blog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档