利用python获取当前日期前后N天或N月日期的方法示例

发布时间 - 2026-01-11 02:33:43    点击率:

前言

最近因为工作原因,发现一个Python的时间组件,很好用分享出来!(忘记作者名字了,在这里先感谢了),下面话不多说,来一起看看详细的介绍吧。

示例代码:

# -*- coding: utf-8 -*-

'''获取当前日期前后N天或N月的日期'''

from time import strftime, localtime
from datetime import timedelta, date
import calendar

year = strftime("%Y", localtime())
mon = strftime("%m", localtime())
day = strftime("%d", localtime())
hour = strftime("%H", localtime())
min = strftime("%M", localtime())
sec = strftime("%S", localtime())

def today():
 '''''
 get today,date format="YYYY-MM-DD"
 '''''
 return date.today()


def todaystr():
 '''
 get date string, date format="YYYYMMDD"
 '''
 return year + mon + day


def datetime():
 '''''
 get datetime,format="YYYY-MM-DD HH:MM:SS"
 '''
 return strftime("%Y-%m-%d %H:%M:%S", localtime())


def datetimestr():
 '''''
 get datetime string
 date format="YYYYMMDDHHMMSS"
 '''
 return year + mon + day + hour + min + sec


def get_day_of_day(n=0):
 '''''
 if n>=0,date is larger than today
 if n<0,date is less than today
 date format = "YYYY-MM-DD"
 '''
 if (n < 0):
  n = abs(n)
  return date.today() - timedelta(days=n)
 else:
  return date.today() + timedelta(days=n)


def get_days_of_month(year, mon):
 '''''
 get days of month
 '''
 return calendar.monthrange(year, mon)[1]


def get_firstday_of_month(year, mon):
 '''''
 get the first day of month
 date format = "YYYY-MM-DD"
 '''
 days = "01"
 if (int(mon) < 10):
  mon = "0" + str(int(mon))
 arr = (year, mon, days)
 return "-".join("%s" % i for i in arr)


def get_lastday_of_month(year, mon):
 '''''
 get the last day of month
 date format = "YYYY-MM-DD"
 '''
 days = calendar.monthrange(year, mon)[1]
 mon = addzero(mon)
 arr = (year, mon, days)
 return "-".join("%s" % i for i in arr)


def get_firstday_month(n=0):
 '''''
 get the first day of month from today
 n is how many months
 '''
 (y, m, d) = getyearandmonth(n)
 d = "01"
 arr = (y, m, d)
 return "-".join("%s" % i for i in arr)


def get_lastday_month(n=0):
 '''''
 get the last day of month from today
 n is how many months
 '''
 return "-".join("%s" % i for i in getyearandmonth(n))


def getyearandmonth(n=0):
 '''''
 get the year,month,days from today
 befor or after n months
 '''
 thisyear = int(year)
 thismon = int(mon)
 totalmon = thismon + n
 if (n >= 0):
  if (totalmon <= 12):
   days = str(get_days_of_month(thisyear, totalmon))
   totalmon = addzero(totalmon)
   return (year, totalmon, days)
  else:
   i = totalmon / 12
   j = totalmon % 12
   if (j == 0):
    i -= 1
    j = 12
   thisyear += i
   days = str(get_days_of_month(thisyear, j))
   j = addzero(j)
   return (str(thisyear), str(j), days)
 else:
  if ((totalmon > 0) and (totalmon < 12)):
   days = str(get_days_of_month(thisyear, totalmon))
   totalmon = addzero(totalmon)
   return (year, totalmon, days)
  else:
   i = totalmon / 12
   j = totalmon % 12
   if (j == 0):
    i -= 1
    j = 12
   thisyear += i
   days = str(get_days_of_month(thisyear, j))
   j = addzero(j)
   return (str(thisyear), str(j), days)


def addzero(n):
 '''''
 add 0 before 0-9
 return 01-09
 '''
 nabs = abs(int(n))
 if (nabs < 10):
  return "0" + str(nabs)
 else:
  return nabs


def get_today_month(n=0):
 '''''
 获取当前日期前后N月的日期
 if n>0, 获取当前日期前N月的日期
 if n<0, 获取当前日期后N月的日期
 date format = "YYYY-MM-DD"
 '''
 (y, m, d) = getyearandmonth(n)
 arr = (y, m, d)
 if (int(day) < int(d)):
  arr = (y, m, day)
 return "-".join("%s" % i for i in arr)


if __name__ == "__main__":
 print today()
 print todaystr()
 print datetime()
 print datetimestr()
 print get_day_of_day(20)
 print get_day_of_day(-3)
 print get_today_month(-3)
 print get_today_month(3)
 print get_today_month(19)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持


# python  # 获取当前日期  # python获取前一天日期  # 获取日期  # Python实现根据日期获取当天凌晨时间戳的方法示例  # 教你用python从日期中获取年、月、日和星期等30种信息  # python如何获取当前系统的日期  # Python实现获取照片拍摄日期并重命名的方法  # django python 获取当天日期的方法  # 在这里  # 这篇文章  # 前日  # 谢谢大家  # 多说  # 很好用  # 期后  # 有疑问  # hour  # min  # sec  # def  # calendar  # date  # year  # timedelta  # day  # DD  # string  # todaystr 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  如何在万网利用已有域名快速建站?  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  EditPlus 正则表达式 实战(3)  如何在Windows环境下新建FTP站点并设置权限?  QQ浏览器网页版登录入口 个人中心在线进入  网站建设保证美观性,需要考虑的几点问题!  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在服务器上三步完成建站并提升流量?  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  Laravel如何创建自定义中间件?(Middleware代码示例)  Bootstrap CSS布局之列表  Java垃圾回收器的方法和原理总结  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  js代码实现下拉菜单【推荐】  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Python文件流缓冲机制_IO性能解析【教程】  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  郑州企业网站制作公司,郑州招聘网站有哪些?  javascript如何操作浏览器历史记录_怎样实现无刷新导航  如何用好域名打造高点击率的自主建站?  javascript基于原型链的继承及call和apply函数用法分析  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  如何在万网开始建站?分步指南解析  javascript中的try catch异常捕获机制用法分析  敲碗10年!Mac系列传将迎来「触控与联网」双革新  怎么用AI帮你为初创公司进行市场定位分析?  如何在IIS中新建站点并解决端口绑定冲突?  java中使用zxing批量生成二维码立牌  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  网易LOFTER官网链接 老福特网页版登录地址  JS碰撞运动实现方法详解  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  如何获取上海专业网站定制建站电话?  如何在IIS中配置站点IP、端口及主机头?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  JavaScript实现Fly Bird小游戏  如何快速生成高效建站系统源代码?  如何选择可靠的免备案建站服务器?