概述
python对时间转换的相关函数方法
import time
import datetime
import secrets
import json
class TimeException(Exception):
"""
自定义关于时间异常的异常类
"""
def __init__(self, desc):
self.desc = desc
def __str__(self):
return self.desc
class TimesTool:
"""
处理时间工具类
"""
@staticmethod
def datetime_of_str(datetime_value=None, str_format='%Y-%m-%d %H:%M:%S'):
"""
转换datetime类型值为指定字符串格式时间日期;若无datetime类型值则默认转换当前日期时间
为指定字符串格式时间日期
:param datetime_value: datetime类型值
:param str_format: 字符串格式化时间的时间格式
"""
if not datetime_value:
return datetime.datetime.now().strftime(str_format)
if not isinstance(datetime_value, datetime.datetime):
raise TimeException('datetime_value要求为datetime类型值')
return datetime_value.strftime(str_format)
@staticmethod
def convert_of_stamp(stamp: int):
"""
时间戳的转换
:param stamp: 时间戳;毫秒级(13位)、秒级(10位)
return "%Y-%m-%d %H:%M:%S" 时间
"""
if len(str(stamp)) == 10:
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(stamp))
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(stamp / 1000))
@staticmethod
def convert_to_stamp(datetime_, stamp_type='ms'):
"""
@param datetime_:datetime时间类型
@param stamp_type: 毫秒ms, 秒s
@return:
"""
if stamp_type == 'ms':
return int(round(datetime_.timestamp()*1000))
return int(round(datetime_.timestamp()))
@staticmethod
def now_time_to_stamp(stamp_type='ms'):
"""
当前时间转换为时间戳
:param stamp_type: 时间戳类型;ms、s 默认为毫秒
return
时间戳
"""
now = time.time()
# 返回float数据
# 毫秒级时间戳
if stamp_type == 'ms':
return int(round(now * 1000))
# 秒级时间戳
return int(now)
@staticmethod
def is_valid_date(date_str: str):
"""
校验是否合法的字符串日期格式
@param date_str:
@return:
"""
if not isinstance(date_str, str):
return False
try:
datetime.datetime.strptime(date_str, "%Y-%m-%d")
except ValueError:
return False
return True
@staticmethod
def str_to_datetime_date_type(date_str, separator='-'):
"""
将日期字符串转换为datetime.date时间类型
@param date_str: 日期字符串
@param separator: 字符串间隔默认 - eg:年-月-日
@return: datetime.date
"""
return datetime.date(*map(int, date_str.split(separator)))
@staticmethod
def get_now_weekday_num():
"""
获取当前星期几数字 1-7
@return:
"""
return datetime.datetime.now().isoweekday()
@staticmethod
def is_valid_time(time_str: str):
"""
校验是否合法的字符串日期时间格式
@param time_str:
@return:
"""
if not isinstance(time_str, str):
return False
try:
res = datetime.datetime.strptime(time_str, "%Y-%m-%d")
except ValueError:
return False
return res
@staticmethod
def now_datetime():
"""
当前datetime类型日期时间
@return:
"""
now_time = datetime.datetime.now()
now_datetime = datetime.datetime.strptime(
now_time.strftime("%Y-%m-%d %H:%M:%S"),
"%Y-%m-%d %H:%M:%S")
return now_datetime
@staticmethod
def plus_or_minus_of_hour(datetime_: datetime.datetime, hours: int = 24,
action: str = 'minus'):
"""
针对datetime时间类型的小时时间(hours)进行加减计算
@param datetime_:
@param hours:
@param action:
@return:
"""
if action == 'minus':
return datetime_ - datetime.timedelta(hours=hours)
return datetime_ + datetime.timedelta(hours=hours)
@staticmethod
def convert_to_utc_str(date_time, utc_format='%Y-%m-%dT%H:%M:%SZ'):
"""
将datetime时间转换为utc字符串格式
@param date_time:
@param utc_format:utc时间格式
@return:
"""
return date_time.astimezone(pytz.utc).strftime(utc_format)
@staticmethod
def convert_of_utc(target_time: str):
"""
UTC世界标准时间(包含T和Z) 转 北京时间
:param target_time:
:return:
"""
_date = datetime.datetime.strptime(target_time, "%Y-%m-%dT%H:%M:%S%fZ")
local_time = _date + datetime.timedelta(hours=8)
end_time = local_time.strftime("%Y-%m-%d %H:%M:%S")
return end_time
@staticmethod
def differential_datetime(start_time, end_time):
"""
datetime时间差值计算
@param start_time: 开始时间
@param end_time: 结束时间
@return: days,hours, minute,seconds
"""
days = (end_time - start_time).days
hour_total_seconds = (end_time - start_time).seconds
hours = hour_total_seconds // 60 // 60
minutes = hour_total_seconds // 60 % 60
seconds = hour_total_seconds % 60 % 60
return days, hours, minutes, seconds
最后
以上就是爱撒娇星月为你收集整理的python对时间转换的相关函数方法的全部内容,希望文章能够帮你解决python对时间转换的相关函数方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复