时间加减
datetime.timedelta
In [1]: import datetime
In [2]: datetime.datetime.now().strftime('%Y-%m-%d %H:%M')
Out[2]: '2018-08-24 19:03'
In [3]: (datetime.datetime.now()-datetime.timedelta(hours=1)).strftime('%Y-%m-%d %H:%M')
Out[3]: '2018-08-24 18:03'
场景
昨天
import datetime
yesterday: datetime.date = datetime.date.today() - datetime.timedelta(days=1)
print(yesterday)
上个月
格式:YYYY-MM
示例:2020-03-03
的上个月是2020-02
import datetime
# 今天
today: datetime.date = datetime.date.today()
print(today)
# 上个月的最后一天
last_day_of_last_month: datetime.date = today - datetime.timedelta(days=today.day)
print(last_day_of_last_month)
# 上个月
last_month: int = last_day_of_last_month.month
print(last_month)
# 上个月所在的年份
year: int = last_day_of_last_month.year
print(year)
# 上个月【完整格式】
ym: str = '%04d-%02d' % (year, last_month)
print(ym)
上一年
import datetime
last_year: int = datetime.date.today().year - 1
print(last_year)
季度
季度规则 | 月份 |
---|---|
Q1 | 1、2、3 |
Q2 | 4、5、6 |
Q3 | 7、8、9 |
Q4 | 10、11、12 |
格式:年Q季度
示例:2021-03-01
所属季度为2021Q1
,上个季度为2020Q4
from datetime import date, timedelta
from math import ceil
# 今天
today = date.today() - timedelta(days=333)
print(today)
# 本月
this_month = today.month
print(this_month)
# 今年
this_year = today.year
print(this_year)
# 本季度
this_quarter = ceil(this_month / 3)
print(this_quarter)
# 本季度【完整格式】
this_yq = '%04dQ%d' % (this_year, this_quarter)
print(this_yq)
# 上季度
last_quarter = this_quarter - 1
if last_quarter == 0:
last_yq = '%04dQ%d' % (this_year - 1, 4)
else:
last_yq = '%04dQ%d' % (this_year, last_quarter)
print(last_yq)
用于数据开发的时间工具类
"""
https://yellow520.blog.youkuaiyun.com/article/details/82024295
"""
from time import time, strftime
from datetime import date, timedelta
class Timer:
def __init__(self):
self.t = time() # 起始秒数
def __del__(self):
if self.__str__():
print('结束时间:%s' % self.now)
print('运行时间:%s' % self)
def __str__(self):
t = self.seconds
if t < 1:
return ''
elif t < 60:
return '%.2fs' % t
elif t < 3600:
return '%.2fmin' % (t / 60)
else:
return '%.2fh' % (t / 3600)
@property
def seconds(self) -> float:
"""程序运行秒数"""
return time() - self.t
@property
def now(self) -> str:
return strftime('%Y-%m-%d %H:%M:%S')
@staticmethod
def today() -> date:
return date.today()
@property
def yesterday(self) -> str:
yesterday = self.today() - timedelta(days=1)
return yesterday.strftime('%Y-%m-%d')
@property
def this_year(self) -> int:
return self.today().year
@property
def last_year(self) -> int:
return self.this_year - 1
@property
def this_month(self) -> str:
"""本月,格式:YYYY-MM"""
return self.today().strftime('%Y-%m')
@property
def last_month(self) -> str:
"""上个月,格式:YYYY-MM"""
last_day_of_last_month = self.today() - timedelta(days=self.today().day) # 上个月的最后一天
return last_day_of_last_month.strftime('%Y-%m')
if __name__ == '__main__':
_t = Timer()
print(_t.now)
print(_t.yesterday)
print(_t.this_month)
print(_t.last_month)
print(_t.this_year)
print(_t.last_year)