#!/usr/bin/env python

import time
import pytz 
import datetime
from tzlocal import get_localzone 
from dm.common.exceptions.invalidArgument import InvalidArgument

class TimeUtility:

    @classmethod
    def getCurrentGMTimeStamp(cls):
        """ Formats GMT timestamp. """
        return time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(time.time()))

    @classmethod
    def formatGMTimeStamp(cls, t):
        """ Format GMT timestamp. """
        return time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(t))

    @classmethod
    def getCurrentLocalTimeStamp(cls):
        """ Formats local timestamp. """
        return time.strftime('%Y/%m/%d %H:%M:%S %Z', time.localtime(time.time()))

    @classmethod
    def formatLocalTimeStamp(cls, t):
        """ Formats local timestamp. """
        return time.strftime('%Y/%m/%d %H:%M:%S %Z', time.localtime(t))

    @classmethod
    def toDateTime(cls, t, format):
        if not t:
            return None
        tz = get_localzone()
        try:
            dt = datetime.datetime.strptime(t, format)
        except Exception, ex:
            raise InvalidArgument('Cannot parse input: %s' % ex)
        return tz.localize(dt, is_dst=None)

#######################################################################
# Testing.
if __name__ == '__main__':
    print TimeUtility.toDateTime('2015-01-03', '%Y-%m-%d')