日期时间转换,日期转换,工具是经常被用到的,可在
日期时间转换,日期转换,工具是经常被用到的,可在
工具是经常被用到的,可在多种场景被简单使用的..
platform: Any
#!/usr/bin/python# encoding: utf-8## filename: datetimetools.py"""通过识别提供的参数的类型,实现的各种"日期时间"数据格式的转换工具 日期时间的数据格式包括: timestamp (unix time, seconds from 1970-1-1 0:00:00), time.struct_time (C 语言中的时间结构) datetime.datetime datetime.date"""import timeimport datetimeDATETIMEBASE = datetime.datetime(1970, 1, 1)DT_DAY = datetime.timedelta(days=1)DT_SECOND = datetime.timedelta(seconds=1)DT_HOUR = 3600 * DT_SECONDclass Convertor: def __init__(self, defaultfmt="%Y-%m-%d %H:%M:%S", tmzone=time.timezone): """set the default string datetime format and system local time zone """ self.fmt = defaultfmt self.tmzone = tmzone self.srcfmt = self.fmt def setsrcfmt(self, fmt="%Y-%m-%d %H:%M:%S"): """set convert string format to be converted""" self.srcfmt = fmt def timestamp(self, obj=None): """return unix timestamp""" if obj is None: return time.time() elif isinstance(obj, datetime.datetime): return (obj - DATETIMEBASE).total_seconds() + self.tmzone elif isinstance(obj, datetime.date): dt = datetime.datetime(obj.year, obj.month, obj.day) return (dt - DATETIMEBASE).total_seconds() + self.tmzone elif isinstance(obj, time.struct_time): return time.mktime(obj) elif isinstance(obj, (int, float)): return obj elif isinstance(obj, str): return time.mktime(time.strptime(obj, self.srcfmt)) def datetime(self, obj=None): """return datetime instance""" if obj is None: return datetime.datetime.now() elif isinstance(obj, datetime.datetime): return obj elif isinstance(obj, datetime.date): return datetime.datetime(obj.year, obj.month, obj.day) elif isinstance(obj, time.struct_time): return datetime.datetime(year=obj.tm_year, month=obj.tm_mon, day=obj.tm_mday, hour=obj.tm_hour, minute=obj.tm_min, second=obj.tm_sec) elif isinstance(obj, (int, float)): tm = time.gmtime(obj-self.tmzone) return datetime.datetime(year=tm.tm_year, month=tm.tm_mon, day=tm.tm_mday, hour=tm.tm_hour, minute=tm.tm_min, second=tm.tm_sec) elif isinstance(obj, str): tm = time.strptime(obj, self.srcfmt) return datetime.datetime(year=tm.tm_year, month=tm.tm_mon, day=tm.tm_mday, hour=tm.tm_hour, minute=tm.tm_min, second=tm.tm_sec) def date(self, obj=None): """return datetime instance""" if obj is None: return datetime.date.today() elif isinstance(obj, (datetime.date, datetime.datetime)): return datetime.date(obj.year, obj.month, obj.day) elif isinstance(obj, time.struct_time): return datetime.date(year=obj.tm_year, month=obj.tm_mon, day=obj.tm_mday) elif isinstance(obj, (int, float)): tm = time.gmtime(obj-self.tmzone) return datetime.date(year=tm.tm_year, month=tm.tm_mon, day=tm.tm_mday) elif isinstance(obj, str): tm = time.strptime(obj, self.srcfmt) return datetime.date(year=tm.tm_year, month=tm.tm_mon, day=tm.tm_mday) def struct_time(self, obj=None): """return a local time.struct_time""" if obj is None: return time.gmtime(time.time()-self.tmzone) elif isinstance(obj, datetime.datetime): tm = (obj - DATETIMEBASE).total_seconds() return time.gmtime(tm) elif isinstance(obj, datetime.date): tm = (datetime.datetime(obj.year, obj.month, obj.day) - DATETIMEBASE).total_seconds() return time.gmtime(tm) elif isinstance(obj, time.struct_time): return obj elif isinstance(obj, (int, float)): return time.gmtime(obj-self.tmzone) elif isinstance(obj, str): return time.strptime(obj, self.srcfmt) def str(self, obj=None): """return formated string""" if obj is None: return datetime.datetime.now().strftime(self.fmt) elif isinstance(obj, (datetime.date, datetime.datetime)): return obj.strftime(self.fmt) elif isinstance(obj, time.struct_time): return time.strftime(self.fmt, obj) elif isinstance(obj, (int, float)): return time.strftime(self.fmt, time.localtime(obj)) elif isinstance(obj, str): return time.strftime(self.fmt, time.strptime(obj, self.srcfmt))def tester(): dct = Convertor() dt = dct.datetime() tm = dct.timestamp() st = dct.struct_time() sr = dct.str() _D = dct.date() print '%r' % tm print '%r' % dct.timestamp(dt) print '%r' % dct.timestamp(tm) print '%r' % dct.timestamp(st) print '%r' % dct.timestamp(sr) print '%r' % dct.timestamp(_D) print '%r' % dt print '%r' % dct.datetime(dt) print '%r' % dct.datetime(tm) print '%r' % dct.datetime(st) print '%r' % dct.datetime(sr) print '%r' % dct.datetime(_D) print '%r' % st print '%r' % dct.struct_time(dt) print '%r' % dct.struct_time(tm) print '%r' % dct.struct_time(st) print '%r' % dct.struct_time(sr) print '%r' % dct.struct_time(_D) dct.setsrcfmt('%Y%m%d%H%M%S') sr = '20130705123245' print '%r' % sr print '%r' % dct.str(dt) print '%r' % dct.str(tm) print '%r' % dct.str(st) print '%r' % dct.str(sr) print '%r' % dct.str(_D) print '%r' % _D print '%r' % dct.date(dt) print '%r' % dct.date(tm) print '%r' % dct.date(st) print '%r' % dct.date(sr)if __name__ == "__main__": tester()#该片段来自于http://byrx.net
相关内容
- 命令行的Google英语翻译(带语音),google英语翻译,使用
- 用python爬虫抓站的一些技巧总结,python爬虫技巧总结
- project euler #10:Summation of primes,,The sum of t
- Python寻找第k小的元素,Python第k元素,# -*- coding
- Flask 淘宝数据再开发WEB,flask淘宝开发web,https://gith
- python count,python,# _*_ coding
- n的阶乘末尾有多少个0,阶乘末尾,请写一段程序计算
- Redis优先列队 --cherryq,redis--cherryq,这个Queue是多列队列
- python中连续多次输出相同字符串的方法,python输出字符
- NHibernate代码生成器,,使用pyodbc连接MS
评论关闭