jtyoui.tools.timestr 源代码

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
# @Time  : 2019/7/4 14:39
# @Author: Jtyoui@qq.com
import datetime
import re


[文档]def plus_date(start: str, end: str, format_='%Y-%m-%d %H:%M:%S') -> datetime: """两个日期相减得差数 :end-start :param start: 一个正确的日期 :param end: 另一个正确的日期 :param format_: 日期格式化 :return: 被加后的日期 """ if '%H:%M:%S' in format_: if ':' not in start: start += ' 00:00:00' if ':' not in end: end += ' 00:00:00' start = datetime.datetime.strptime(start, format_) end = datetime.datetime.strptime(end, format_) plus = end - start return plus
[文档]def add_day(date: str, format_='%Y-%m-%d', to_str=False, **kwargs) -> datetime: """一个日期加多少天或者时间 :param date: 一个正确的日期 :param format_: 日期格式化 :param to_str: 是否打印字符串 :param kwargs: 可以填写 :days=xx,seconds=xx,microseconds=xx,milliseconds=xx,minutes=xx,hours=xx,weeks=xx :return: 被加后的日期 """ start = datetime.datetime.strptime(date, format_) end = datetime.timedelta(**kwargs) if to_str: add = start + end return add.strftime(format_) return start + end
[文档]def check_date_type(date_str: str) -> (bool, datetime): """验证数字字符串是否日期类型:例如 2018-2-1 :param date_str: 日期类型 例如 2019-2-1,返回真、2019-2-29 返回假(2019年没有2月29号)。 :return: 返回元组,(真、datetime类型)、(假、None) """ try: p = "[!#$%&*+,-./:;=?@^_` |~年月日号点分秒]" data = [] for r in re.split(p, date_str): if r and isinstance(r, str): data.append(int(r)) d = datetime.datetime(*data) return True, d except: return False, None
if __name__ == '__main__': p = plus_date(start='2018-02-01', end='2018-01-01') print(p.days) print(add_day(date='2018-02-28', days=1, to_str=True)) print(check_date_type('2018-2-28 23:00:00')) print(check_date_type('2018/2/1')) print(check_date_type('2018年2月1日14点15分20秒'))