[Python] 获取前一日/周/月/年或相对任意时间

一、当前时间

# 使用time模块
import time
current_time = time.strftime("%Y-%m-%d %H%M%S", time.localtime())

# 使用datetime模块
import datetime
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H%M%S")

二、相对当前时间的前一天、前一周、前一月、前一年等

相对时间可以使用 timedelta() 和 relativedelta()。这里使用可以支持年 、月、日、周、时、分、秒的参数,功能更加强大的relativedelta()。

import datetime
from dateutil.relativedelta import relativedelta

# 减去一年
print((datetime.datetime.now() + relativedelta(years=-1)).strftime("%Y-%m-%d %H:%M:%S"))
# 减去一月
print((datetime.datetime.now() + relativedelta(months=-1)).strftime("%Y-%m-%d %H:%M:%S"))
# 减去一周
print((datetime.datetime.now() + relativedelta(weeks=-1)).strftime("%Y-%m-%d %H:%M:%S"))
# 减去一天
print((datetime.datetime.now() + relativedelta(days=-1)).strftime("%Y-%m-%d %H:%M:%S"))
# 减去一小时
print((datetime.datetime.now() + relativedelta(hours=-1)).strftime("%Y-%m-%d %H:%M:%S"))
# 减去一分钟
print((datetime.datetime.now() + relativedelta(minutes=-1)).strftime("%Y-%m-%d %H:%M:%S"))
# 减去一秒钟
print((datetime.datetime.now() + relativedelta(seconds=-1)).strftime("%Y-%m-%d %H:%M:%S"))

三、相对(现在、或特定时间)任意时间

在相对当前时间之上自行封装了一个函数,很方便的返回相对现在或者特定时间点的任意相对时间。

print(relative_time(use_now=True))  # 现在
print(relative_time(use_now=True, days=-1))  # 昨天的现在
print(relative_time(use_now=True, years=-1))    # 一年前的现在
print(relative_time(use_now=True, days=-1, months=-1))  # 上个月的前一天
# 2020-09-30 12:00:00后一天
print(relative_time(use_now=False, date_string='2020-09-30 12:00:00', date_format="%Y-%m-%d %H:%M:%S", days=1))  
# 2020-09-30 前一年的后两星期
print(relative_time(use_now=False, date_string='2020-09-30', date_format="%Y-%m-%d", years=-1, weeks=2))    

# 封装操作
def relative_time(use_now=True, date_string=None, date_format=None, years=0, months=0, days=0, leapdays=0, weeks=0, hours=0, minutes=0, seconds=0, microseconds=0):
    relative_delta = relativedelta(years=years, months=months, days=days, leapdays=leapdays, weeks=weeks, hours=hours,
                                   minutes=minutes, seconds=seconds, microseconds=microseconds)
    _date = datetime.datetime.now() if use_now else datetime.datetime.strptime(date_string, date_format)
    return (_date + relative_delta).strftime("%Y-%m-%d %H:%M:%S")
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值