oop的方式来操纵时间
减少return 减少传参。
主要是在调用上比以前强大很多,以前很怕操作时间,在一堆函数中传来传去。这个调用爽。
class DatetimeConverter: DATETIME_FORMATTER = "%Y-%m-%d %H:%M:%S" DATETIME_FORMATTER2 = "%Y-%m-%d" @classmethod def bulid_conveter_with_other_formatter(cls, datetime_str, datetime_formatter): """ :param datetime_str: 时间字符串 :param datetime_formatter: 能够格式化该字符串的模板 :return: """ datetime_obj = datetime.datetime.strptime(datetime_str, datetime_formatter) return cls(datetime_obj) def __init__(self, datetimex: typing.Union[int, float, datetime.datetime, str] = time.time()): """ :param datetimex: 接受时间戳 datatime类型 和 时间字符串三种类型 """ if isinstance(datetimex, str): if not re.match('\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', datetimex): raise ValueError('时间字符串的格式不符合此传参的规定') else: self.datetime_obj = datetime.datetime.strptime(datetimex, self.DATETIME_FORMATTER) elif isinstance(datetimex, (int, float)): self.datetime_obj = datetime.datetime.utcfromtimestamp(datetimex) elif isinstance(datetimex, datetime.datetime): self.datetime_obj = datetimex else: raise ValueError('实例化时候的传参不符合规定') @property def datetime_str(self): return self.datetime_obj.strftime(self.DATETIME_FORMATTER) @property def timestamp(self): return self.datetime_obj.timestamp() @property def date_str(self): return self.datetime_obj.strftime(self.DATETIME_FORMATTER2) @property def one_hour_ago_datetime_converter(self): """ 酒店经常需要提前一小时免费取消,直接封装在这里 :return: """ one_hour_ago_datetime_obj = self.datetime_obj + datetime.timedelta(hours=-1) return self.__class__(one_hour_ago_datetime_obj) def is_greater_than_now(self): return self.timestamp > time.time() def __str__(self): return self.datetime_str def __call__(self): return self.datetime_obj if __name__ == '__main__': """ 1557113661.0 '2019-05-06 12:34:21' '2019/05/06 12:34:21' DatetimeConverter(1557113661.0)() """ o3 = DatetimeConverter('2019-05-06 12:34:21') print(o3) print('- - - - - - - -') o = DatetimeConverter.bulid_conveter_with_other_formatter('2019/05/06 12:34:21', '%Y/%m/%d %H:%M:%S') print(o) print(o.date_str) print(o.timestamp) print('***************') o2 = o.one_hour_ago_datetime_converter print(o2) print(o2.date_str) print(o2.timestamp) print(o2.is_greater_than_now()) print(o2(), type(o2())) print(DatetimeConverter())
反对极端面向过程编程思维方式,喜欢面向对象和设计模式的解读,喜欢对比极端面向过程编程和oop编程消耗代码代码行数的区别和原因。致力于使用oop和36种设计模式写出最高可复用的框架级代码和使用最少的代码行数完成任务,致力于使用oop和设计模式来使部分代码减少90%行,使绝大部分py文件最低减少50%-80%行的写法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」