| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | #!/usr/bin/python3.6# -*- coding: utf-8 -*-## Copyright (C) 2022 ## @Time    : 2022/3/26 16:20# @Author  : ming# @Email   : zhangdongming@asj6.wecom.work# @File    : LocalDateTimeUtil.py# @Software: PyCharmimport datetimeimport timedef get_last_first_date_and_last_date(n):    """    获取前n周开始时间和结束时间,参数n:代表前n周    """    now = datetime.datetime.now()    # 上周第一天和最后一天    before_n_week_start = now - datetime.timedelta(days=now.weekday() + 7 * n, hours=now.hour, minutes=now.minute,                                                   seconds=now.second, microseconds=now.microsecond)    # last_week_end = now - timedelta(days=now.weekday() + 1)    before_n_week_end = before_n_week_start + datetime.timedelta(days=6, hours=23, minutes=59, seconds=59)    return before_n_week_start, before_n_week_enddef get_today_date(timestamp=False):    """    返回当天开始时间和结束时间    Args:        timestamp 是否返回时间戳    returns:        zero_today ,last_today    """    now = datetime.datetime.now()    zero_today = now - datetime.timedelta(hours=now.hour, minutes=now.minute, seconds=now.second,                                          microseconds=now.microsecond)    last_today = zero_today + datetime.timedelta(hours=23, minutes=59, seconds=59)    if timestamp:        zero_today = int(time.mktime(zero_today.timetuple()))        last_today = int(time.mktime(last_today.timetuple()))        return zero_today, last_today    return zero_today, last_todaydef get_last_month():    """    获取前一个月时间    returns:        last_month_date    """    today = datetime.date.today()  # 1. 获取「今天」    last_month = today.replace(month=today.month - 1)  # 2.获取前一个月    last_month_date = last_month.strftime("%Y-%m-%d %H:%M:%S")    return last_month_datedef get_before_days_timestamp(timestamp, days=1):    """    获取之前日期时间戳-秒级    @param timestamp: 时间戳    @param days: 天数    @return: (timestamp - second * hour * days) 时间戳    """    if days:        second = 3600        hour = 24        if days > 0:            return timestamp - second * hour * days    return 0def date_to_week(str_date):    """    日期获取星期几    @param str_date 日期 例:2022-03-03    @return: int 1-7    """    if str_date:        return datetime.datetime.strptime(str_date, "%Y-%m-%d").weekday() + 1    return datetime.datetime.now().weekday() + 1def format_date_to_week(str_date, str_format):    """    日期获取星期几    @param str_format:  %Y-%m-%d    @param str_date 日期 例:2022-03-03    @return: int 1-7    """    if str_date:        return datetime.datetime.strptime(str_date, str_format).weekday() + 1    return 0def get_start_and_end_time(date, str_format):    """    根据日期获取当日开始and结束时间戳    @param date: 日期 例:2022-03-07    @param str_format: 格式 例:%Y-%m-%d    @return: start_time,end_time    """    if date:        today = datetime.datetime.strptime(date, str_format)        day = today + datetime.timedelta(days=1)        start_time = int(time.mktime(time.strptime(str(today.date()), '%Y-%m-%d')))        end_time = int(time.mktime(time.strptime(str(day.date()), '%Y-%m-%d'))) - 1        return start_time, end_time    return 0if __name__ == "__main__":    dd = str(1650791368303)    print(dd[0:10])    print(dd[10:])    dateArray = datetime.datetime.utcfromtimestamp(1650791368)    print(dateArray.date())    print(get_start_and_end_time('20220317', '%Y%m%d'))
 |