Python 隨筆(1) 時間格式轉換
阿新 • • 發佈:2018-12-19
- Python 有許多的時間格式
- 在將時間進行計算或者存入資料庫時 往往就需要對時間進行轉換
- 這裡將 時間戳 字串 datatime struct_time 做了隱式轉換的封裝成類
- 有更多的時間格式 可在下面留言
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/10/4/004 9:47 # @Author : Woe # @Site : # @File : format.py # @Software: PyCharm import time from datetime import datetime class Time: def __init__(self, date): self.time_datetime = None self.time_timestamp = None self.time_struct_time = None self.time_str = None if isinstance(date, datetime): self.format_datatime(date) if isinstance(date, time.struct_time): self.format_time_struct_time(date) if isinstance(date, float) or isinstance(date, int): self.format_time_struct_time(time.localtime(date)) self.time_timestamp = date if isinstance(date, str): self.time_str = date @property def struct_time(self): if self.time_struct_time: return self.time_struct_time self.time_struct_time = time.localtime(self.timestamp) return self.time_struct_time @property def timestamp(self): if self.time_timestamp : return self.time_timestamp self.time_timestamp = time.mktime(time.strptime(self.time_str, "%Y-%m-%d %H:%M:%S")) return self.time_timestamp @property def datetime(self): if self.time_datetime: return self.time_datetime self.time_datetime = datetime.strptime(self.time_str, "%Y-%m-%d %H:%M:%S") return self.time_datetime @property def str(self): return self.time_str def __str__(self): return self.str def format_datatime(self, date: datetime): self.str_ymd = date.strftime('%Y-%m-%d') self.str_hms = date.strftime('%H:%M:%S') self.time_str = f"{self.str_ymd} {self.str_hms}" self.time_datetime = date def format_time_struct_time(self, date: time.struct_time): self.str_ymd = time.strftime('%Y-%m-%d', date) self.str_hms = time.strftime('%H:%M:%S', date) self.time_str = f"{self.str_ymd} {self.str_hms}" self.time_struct_time = date if __name__ == '__main__': date = datetime.now() date = time.time() date = '2018-09-10 10:10:10' date = Time(date) print(date.str) print(date.datetime) print(date.timestamp) print(date.struct_time)