python常用日期使用方法_con_knife的博客-程序员秘密

技术标签: python  

#!/usr/bin/python3

-- coding: utf-8 --

“”"
通过datetime和dateutil进行常用日期的获取
如:
今年,去年,明年
当前季度
本月,上月,去年同期,今年一月
今天,昨天,明天,
本周、本月、本季度、本年第一天,
本周、本月、本季度、本年最后一天
“”"

import datetime

获取常用特定日期(如去年/季度/当月/本周/首日/)

=======================================

关于年(今年,去年,明年)

=======================================

今年

today = datetime.date.today() # 都是基于today, 此时为’2019-02-22’,下同
today.year # out: 2019

去年

today = datetime.date.today()
today.year-1 # out : 2018

明年

today = datetime.date.today()
today.year+1 # out : 2020

=======================================

关于季度(当前季度)

=======================================

today = datetime.date.today()
quarter = (today.month-1) // 3 + 1
‘{}Q{}’.format(today.year, quarter) # out: ‘2019Q1’

=======================================

关于月(本月,上月,当年1月,去年同月)

=======================================

本月(月份)

today = datetime.date.today()
today.month # out: 2

本月(年月)

today = datetime.date.today()
datetime.datetime.strftime(today, “%Y-%m”) # out: ‘2019-02’

上月

today = datetime.date.today()
last_month = today + datetime.timedelta(days=-today.day)

last_month.month # 月份,out: 1

datetime.datetime.strftime(last_month,"%Y-%m") # out: ‘2019-01’

上N个月

from dateutil.relativedelta import relativedelta # 需要引入新的包
today = datetime.date.today()
last_2_month = today + relativedelta(months=-2) # 上两个月,上N个月参数为(months=-N)
datetime.datetime.strftime(last_2_month, “%Y-%m”) # out: ‘2018-12’

当年1月

today = datetime.date.today()
str(today.year) +’-01’ # out: ‘2019-01’

=======================================

关于天

=======================================

今天(天数)

today = datetime.date.today()
today.day

今天(日期)

today.isoformat() # out: ‘2019-02-22’

昨天

today = datetime.date.today()
yesterday = today + datetime.timedelta(days=-1)
yesterday.isoformat() # out: ‘2019-02-21’

明天

today = datetime.date.today()
yesterday = today + datetime.timedelta(days=1)
yesterday.isoformat() # out: ‘2019-02-23’

本周第一天

today = datetime.date.today()
week_start_day = today - datetime.timedelta(days=today.weekday())
week_start_day.isoformat() # ‘2019-02-18’,周一

本周最后一天

today = datetime.date.today()
week_end_day = today + datetime.timedelta(days=6-today.weekday())
week_end_day.isoformat() # ‘2019-02-24’,周天

本月第一天

today = datetime.date.today()
month_start_day = today - datetime.timedelta(days=today.day-1)
month_start_day.isoformat() # ‘2019-02-01’,当月第一天

本月最后一天

from dateutil.relativedelta import relativedelta # 引入新的包
today = datetime.date.today()

必须先置为首日,直接用relativedelta(months=1,days=-today.day+1)会有错误结果

month_end_day = (today + datetime.timedelta(days=-today.day+1)) + relativedelta(months=1,days=-1)
month_end_day.isoformat() # ‘2019-02-28’,当月最后一天

本季度第一天

today = datetime.date.today()
quarter_start_day = datetime.date(today.year,today.month - (today.month - 1) % 3, 1)
quarter_start_day.isoformat() # ‘2019-01-01’ ,本季度第一天

本季度最后一天

from dateutil.relativedelta import relativedelta # 引入新的包
today = datetime.date.today()
quarter_end_day = datetime.date(today.year,today.month - (today.month - 1) % 3 +2, 1) + relativedelta(months=1,days=-1)
quarter_end_day.isoformat() # ‘2019-03-31’ ,本季度最后一天

本年第一天

today = datetime.date.today()
year_start_day = datetime.date(today.year, 1, 1)
year_start_day.isoformat() # ‘2019-01-01’ ,本年第一天

本年最后一天

today = datetime.date.today()
year_end_day = datetime.date(today.year+1, 1, 1) - datetime.timedelta(days=1)
year_end_day.isoformat() # ‘2019-12-31’ ,本年最后一天

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/con_knife/article/details/101022326

智能推荐

麦当劳经营理念酷似SOA_麦当劳实施soa_ILoveIT111的博客-程序员秘密

IT专家网 > CIO子站 > CIO评论分析麦当劳经营理念酷似SOA作者: 王洪伟 ,  出处:论坛, 责任编辑: 罗丽艳, 2008-01-31 08:44  麦当劳品牌的创始人是雷.克罗克,他以非凡的经营才能,把卖当劳兄弟的小餐馆变成了世界快餐第一品牌,自己也成为美国乃至全球著企业家之一……  麦当劳品牌的创始人是雷.克罗克,他以非凡的经营才能,把卖当劳兄弟的小餐

OpenGl笔记--纹理贴图_噜啦啦噜啦啦噜啦噜啦嘞噜啦噜啦的博客-程序员秘密

文章目录一、圆柱,圆盘,圆锥的绘制二、纹理贴图1.什么是纹理2.纹理坐标的映射3.效果图一、圆柱,圆盘,圆锥的绘制绘制一个物体,我们首先得确定其的顶点数据,再将顶点数据送入着色器进行绘制圆柱的绘制圆柱是由两个圆形以及一个矩形绘制成的图形,那么我们所要确立的顶点也就显而易见了,那便是上下两个圆的分割点,再由足够多上下四个点构成的两个三角面片绘制成侧面即可。大致的图片已经贴出如下代码如下(示例):generateCylinder(int num_division, float radius,

约瑟夫环问题求解--程序+详细注解_约瑟夫环ns图_u013344815的博客-程序员秘密

约瑟夫环问题起源于一个犹太故事。约瑟夫环问题的大意如下罗马人攻占了桥塔帕特,41个人藏在一个山洞中躲过了这场浩劫。这41个人中,包括历史学家约瑟夫和他的一个朋友。剩余的39个人为了表示不向罗马人屈服,决定集体自杀。大家决定了一个自杀方案,所有这41个人围成一个圆圈,由第1个人开始顺时针报数,每报数为3的人就立刻自杀,然后再由下一个人继续报数,仍然是每报数为3的人就立刻自杀……,直到所有人都自杀

各种音视频编解码学习详解_音频编解码汇总_linghong876的博客-程序员秘密

编解码学习笔记(一):基本概念媒体业务是网络的主要业务之间。尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析、应用开发、释放license收费等等。最近因为项目的关系,需要理清媒体的codec,比较搞的是,在豆丁网上看运营商的规范 标准,同一运营商同样的业务在不同文档中不同的要求,而且有些要求就我看来应当是历史的延续,也就是现在已经很少采用了。...

win10系统下vs2015+opencv3.4.3+cmake编译opencv-contrib3.4.3_做清淡欢颜的女子的博客-程序员秘密

最近在研究KAZE算法,发现我使用的opencv2.4.8中没有集成KAZE算法,网上查找该算法在opencv3版本中有,故将opencv和vs卸载重装,我安装的是opencv3.4.3+vs2015,一切配置完之后,发现KAZE算法是可以用了,但SIFT/SURF算法又出错,原来是由于版权问题,将其放在了opencv_contrib扩展模块中,又重新编译配置了一遍,该过程出现了多问题,特此将其写...

随便推点

泛微OA ecology集群时候 Linux下做目录的软连接_E-cology的博客-程序员秘密

软连接 :ln -s 存储源 目录(/usr/目录下不能存在emp目录,执行命令后/usr/emp会指向/mnt/EM7/emp)注意:默认会在 /usr/ 目录下创建一个源目录最后同名的软连接,即emp。ln -s /mnt/EM7/emp /usr/

Appium报错:[10061] 由于目标计算机积极拒绝,无法连接。_appium 由于目标计算机积极拒绝,无法连接_飞翔的大黑壮(猫猫)的博客-程序员秘密

同一个坑跌倒了好几次!错误原因:Appium没有打开!!!!!解决办法:打开Appium后执行。

xorg-xserver相关完全解析_yang&ma的博客-程序员秘密

本文主要是从以下几个方面介绍xorg-xserver 相关的知识 1.linux系统图形界面框架2.xserver 和x client启动过程3.图形2d,3d加速原理简介4.xserver主分支代码解析。5.xserver,xclient协议简介6.一个基于Xlib的简单例子解析7.radeon驱动初始化代码解析.1.linux图形界面框架参考至:ht

高德api 实现根据中文地址地图打点弹窗_高德地图api弹窗_MaYiDoDo的博客-程序员秘密

<script language="javascript"> var geocoder = new AMap.Geocoder({ // city: "0851", //城市设为北京,默认:“全国” }); function getLocate(addr) { return new Promise(function(resolve, reject) { ...

Android系统移植方法详解(转)_tslib支持android_老肖79的博客-程序员秘密

Android系统移植方法详解http://www.anzhuoba.com/archiver/?tid-8419.html[本文WORD文档下载:]通过Android系统移植,让它在目标系统上运行起来。Android系统由于用的是linux内核,因此内核移植和嵌入式linux内核移植差异不大,过程如下:(1)移植boot-loader和linux2.6内核到目标平

RS232(电平信号)及RS485(差分信号)_rs232是差分信号吗_santirenpc的博客-程序员秘密

RS-485是一种应用十分广泛的通信协议。其显著特点是信号采用“差分”的方式传输,因此抗干扰能力很强,通信距离也比RS-232远得多。RS-485通信一般是半双工的,仅需要2根信号线,也可以是全双工的,需要4根信号线。差分信号是一对大小相等而极性相反的对称信号,差分信号用于传输有用的信号。共模信号是作用于差分信号线上的一对大小相等极性也相同的信号,共模信号往往来自于外部干扰。差分信号在接收端是靠差分放大器来检测的。差分放大器只对两路输入信号之间的差值起放大作用,而对两路输入信号共同对地的电位不起作用。在差