python 时间工具类

分享一个时间工具类,欢迎大家品尝。

#!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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值