# -*- coding: utf-8 -*-
# @Author : Pineapple Dong ^_^
# @Time : 2018/6/13 21:56
# @File : time_tools.py
import time
import datetime as dt
class TimeTools:
"""
時間都去哪兒了。。。。。。
關(guān)于時間,我想整點事情。。。。。。
一個關(guān)于時間的類。。。。。
趁開發(fā)小哥改bug,偷摸寫的。。。。。
"""
format_d_t = "%Y-%m-%d %H:%M:%S"
format_d = "%Y-%m-%d"
@classmethod
def get_format_time(cls, date, format_s: str = None) -> str:
"""
獲取格式化后的時間(exp:2018-06-13 21:55:55)
:param date: 需格式化的時間
:param format_s: 時間格式
:return:
"""
try:
format_s = cls.format_d_t if format_s is None else format_s
date_t = None
if isinstance(date, dt.datetime) or isinstance(date, dt.date):
date_t = date.timetuple()
elif (isinstance(date, float) or isinstance(date, int)) and len(str(int(date))) == 10:
date_t = time.localtime(date)
elif (isinstance(date, float) or isinstance(date, int)) and len(str(int(date))) == 13:
date_t = time.localtime(date / 1000)
return time.strftime(format_s, date_t)
except TypeError:
pass
except Exception as e:
print(e)
@classmethod
def get_until_time(cls, date, format_s: str = None) -> dt.datetime:
"""
獲取指定時間的datetime對象
:param date: 時間,可為時間戳或者字符串時間
:param format_s: 時間為字符串時需添加格式
:return:
"""
try:
format_s = cls.format_d_t if format_s is None else format_s
date_t = None
if isinstance(date, str):
date_t = time.strptime(date, format_s)
# print(date_t)
elif (isinstance(date, int) or isinstance(date, float)) and len(str(int(date))) == 10:
date_t = time.localtime(date)
elif (isinstance(date, int) or isinstance(date, float)) and len(str(int(date))) == 13:
date_t = time.localtime(date / 1000)
return dt.datetime(date_t.tm_year,
date_t.tm_mon,
date_t.tm_mday,
date_t.tm_hour,
date_t.tm_min,
date_t.tm_sec)
except AttributeError:
pass
except Exception as e:
print(e)
@classmethod
def get_seconds(cls, date, format_s: str = None) -> float:
"""
獲取指定時間的時間戳
:param date:時間,可為時間戳或者字符串時間
:param format_s: 時間為字符串時需添加格式
:return:
"""
try:
format_s = cls.format_d_t if format_s is None else format_s
date_t = None
if isinstance(date, str):
date_t = time.strptime(date, format_s)
if isinstance(date, dt.datetime) or isinstance(date, dt.date):
date_t = date.timetuple()
return time.mktime(date_t)
except TypeError:
pass
except Exception as e:
print(e)
@classmethod
def begin_of_day_mills(cls, day=None):
"""
獲取一天開始時的毫秒時間戳,默認為當(dāng)天
:param day: 指定時間
:return:
"""
try:
day_u = dt.date.today() if day in (None, "") else cls.get_until_time(day)
return cls.get_seconds(dt.date(day_u.year, day_u.month, day_u.day)) * 1000
except AttributeError:
pass
except Exception as e:
print(e)
@classmethod
def end_of_day_mills(cls, day=None):
"""
獲取一天的結(jié)束時間的毫秒時間戳, 默認為當(dāng)天
:param day: 指定時間
:return:
"""
try:
return cls.begin_of_day_mills(day) + 24 * 60 * 60 * 1000 - 1
except TypeError:
pass
except Exception as e:
print(e)
@staticmethod
def get_month_end_day(year: int, month: int) -> int:
"""
獲取某年某月的最后一天
:param year: 某年
:param month: 某月
:return:
"""
days = 31
while days:
try:
datetime.date(year=year, month=month, day=days)
return days
except ValueError:
days -= 1
@staticmethod
def begin_of_month_day(month, year=dt.date.today().year):
"""
獲取某月的第一天
:param month:
:param year:
:return:
"""
try:
return dt.date(year, month, 1)
except ValueError:
pass
@classmethod
def end_of_month_day(cls, month, year=dt.date.today().year):
"""
獲取某月的最后一天
:param month:
:param year:
:return:
"""
try:
return dt.date(year, month, cls.get_month_end_day(year, month))
except ValueError:
pass
@classmethod
def get_interval_day_by_day(cls, interval: int, date=None):
"""
獲取某日(默認今天)相隔幾天的日期
:param interval:正數(shù)為未來,負數(shù)為過去
:param date:指定日期
:return:
"""
try:
date = dt.date.today() if date is None else date
date = date if isinstance(date, dt.date) else cls.get_until_time(date, cls.format_d)
time_del = dt.timedelta(days=interval)
return date + time_del
except Exception as e:
print(e)
@classmethod
def different_days(cls, date1: str, date2: str):
"""
獲取兩個日期之間相差幾天
:param date1: 指定日期1,格式為(2018-05-22)
:param date2: 指定日期2,格式為(2018-06-15)
:return:
"""
try:
date1_u = cls.get_until_time(date1, cls.format_d)
date2_u = cls.get_until_time(date2, cls.format_d)
return (date1_u - date2_u).days
except Exception as e:
print(e)
關(guān)于時間,我想整點事情,python的一個時間操作類
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 今天在停車場遇到了吳迪,起初我根本就沒認出來,當(dāng)他一邊摸著我的頭一邊說小丫頭一點都沒變的時候,我才反應(yīng)過來!是吳迪...