Source code for dateconv

# -*- encoding: utf-8 -*-

import datetime
import time


[docs]class DateConvException(Exception): pass
[docs]def h2u(value, view='%Y-%m-%d %H:%M:%S', unix_int=True): """Convert str in format (view) to unix time. :param value: string of date :param view: format string :param unix_int: return unix time as int value :return: unix time (int value) """ try: result = time.mktime(datetime.datetime.strptime(value, view) .timetuple()) result = int(result) if unix_int else result except (ValueError, AttributeError) as e: raise DateConvException('Exception from dateconv: %s' % str(e)) else: return result
[docs]def d2u(value, unix_int=True): """Convert datetime object to unix time. :param value: datetime.datetime object :param unix_int: return unix time as int value :return: unix time (int value) """ try: result = time.mktime(value.timetuple()) result = int(result) if unix_int else result except (ValueError, AttributeError) as e: raise DateConvException('Exception from dateconv: %s' % str(e)) else: return result
[docs]def u2d(value, unix_int=True): """Convert unix time to datetime. :param value: datetime object :param unix_int: before converting to datetime, convert unix time to int :return: """ try: value = int(value) if unix_int else value result = datetime.datetime.fromtimestamp(value) except (ValueError, AttributeError) as e: raise DateConvException('Exception from dateconv: %s' % str(e)) else: return result
[docs]def h2d(value, view='%Y-%m-%d %H:%M:%S', unix_int=True): """Convert str in format %view% to datetime. :param value: datetime object :param view: format string :param unix_int: before converting to datetime, convert unix time to int :return: """ try: result = u2d(h2u(value, view, unix_int)) except (ValueError, AttributeError) as e: raise DateConvException('Exception from dateconv: %s' % str(e)) else: return result
[docs]def d2h(value, view='%Y-%m-%d %H:%M:%S'): """Convert datetime object to str in format. :param value: datetime.datetime object :return: unix time (int value) """ try: result = value.strftime(view) except (ValueError, AttributeError) as e: raise DateConvException('Exception from dateconv: %s' % str(e)) else: return result
[docs]def u2h(value, view='%Y-%m-%d %H:%M:%S', unix_int=True): """Convert unix time to datetime object. :param value: unix_time (int value) :param view: format to string :param unix_int: before converting to datetime, convert unix time to int :return: """ try: value = int(value) if unix_int else value result = d2h(datetime.datetime.fromtimestamp(value), view) except (ValueError, AttributeError) as e: raise DateConvException('Exception from dateconv: %s' % str(e)) else: return result
[docs]def l2g(value, view='%Y-%m-%d %H:%M:%S'): """Convert local time to gmt. :param value: time value (str, datetime, unix time) :param view: format to string :return: return unix time """ if isinstance(value, str): unix_value = h2u(value, view) elif isinstance(value, datetime.datetime): unix_value = d2u(value) elif isinstance(value, int): unix_value = value else: raise DateConvException( 'Exception from dateconv: not define type of value: %s' % type( value)) return int(time.mktime(time.gmtime(unix_value)))
[docs]def g2l(value, view='%Y-%m-%d %H:%M:%S'): """Convert gtm time to local time. :param value: time value (str, datetime, unix time) :param view: format to string :return: """ if isinstance(value, str): unix_value = h2u(value, view) elif isinstance(value, datetime.datetime): unix_value = d2u(value) elif isinstance(value, int): unix_value = value else: raise DateConvException( 'Exception from dateconv: not define type of value: %s' % type( value)) offset = (datetime.datetime.fromtimestamp( unix_value) - datetime.datetime.utcfromtimestamp( unix_value)).total_seconds() return int(unix_value + offset)