分享一个时间工具类,欢迎大家品尝。
#!D:/Code/python
# -*- coding: utf-8 -*-
# @Time :2021/3/27 15:07
# @Author : NZL
# @File : date_utils.py
# @Desc : 时间工具
from utils import *
def change_time_days(dateTimeStr, day):
"""
改变时间的天
:param dateTimeStr:
:param day: 可正 可负 正为增加天数 负为减少天数
:return:
"""
timeData = datetime.datetime.strptime(dateTimeStr, "%Y-%m-%d %H:%M:%S")
return (timeData + datetime.timedelta(days=int(day))).strftime("%Y-%m-%d %H:%M:%S")
def change_time_minutes(dateTimeStr, minutes):
"""
改变时间的 分钟
:param dateTimeStr:
:param minutes: 可正 可负 正为增加分钟 负为减少分钟
:return:
"""
timeData = datetime.datetime.strptime(dateTimeStr, "%Y-%m-%d %H:%M:%S")
return (timeData + datetime.timedelta(minutes=int(minutes))).strftime("%Y-%m-%d %H:%M:%S")
def change_time_month(dateTimeStr, c_month):
"""
改变时间的 月份
:param dateTimeStr:
:param c_month: 可正 可负 正为增加月份 负为减少月份
:return:
"""
try:
c_data = datetime.datetime.strptime(str(dateTimeStr), "%Y-%m-%d %H:%M:%S")
year = c_data.year
month = c_data.month
day = c_data.day
hour = c_data.hour
minute = c_data.minute
second = c_data.second
sum_month = int(month + c_month)
year = int((year * 12 + sum_month) / 12)
if int((year * 12 + sum_month) % 12) == 0:
month = 12
year -= 1
else:
month = sum_month % 12
if month == 2 and day > 28:
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
day = 29
else:
day = 28
return datetime.datetime.strptime('%s-%s-%s %s:%s:%s' % (year, month, day, hour, minute, second), "%Y-%m-%d %H:%M:%S")
except Exception as e:
logging.error("改变时间:%s 的月份:%s,出错:%s" % (dateTimeStr, c_month, e))
return None
def getNowDataTime():
"""
获取当前年月日时分秒
:return: 返回 datetime.datetime 类型
"""
today = getNowDataTimeStr()
return datetime.datetime.strptime(today, "%Y-%m-%d %H:%M:%S")
def getNowDataTimeStr():
"""
获取当前年月日时分秒
:return: 返回 str
"""
today = datetime.datetime.now()
return today.strftime("%Y-%m-%d %H:%M:%S")
def getDateDiff(startTime, endTime):
"""
计算时间差的分钟数 向上取整
:param startTime: 开始时间
:param endTime: 结束时间
:return: 相差分钟数
"""
startTime = str(startTime)
endTime = str(endTime)
startTimestamp = dataToTimestamp(startTime)
endTimestamp = dataToTimestamp(endTime)
temp = abs(int(endTimestamp - startTimestamp))
return math.ceil(temp / 60)
def dataToTimestamp(paramData, millisecond=False):
"""
时间转时间戳 格式 年月日时分秒
:param millisecond:
:param paramData:
:return:
"""
data_sj = time.strptime(paramData, "%Y-%m-%d %H:%M:%S")
time_int = time.mktime(data_sj)
if millisecond:
time_int = time_int * 1000
return int(time_int)
def getNowTimestamp(millisecond=False):
"""
获取当前时间戳 默认为秒级
:param millisecond:
:return:
"""
timestamp = time.time()
if millisecond:
timestamp = timestamp * 1000
return int(timestamp)