#!/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: PyCharm import datetime import time def 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_end def 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_today def 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_date def 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 0 def 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() + 1 def 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 0 def 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 0 if __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'))