X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Fsfatime.py;h=11cc566b33d11359e164c7a4590d5999635b0472;hb=db88e8be755e4a4c17fcd65eec98ca420eff91a4;hp=901b4e0d79f94e588dc69c604ac2dc2aad421a32;hpb=0d9988520909b74d702b05a9ce63a36e7e41e2f1;p=sfa.git diff --git a/sfa/util/sfatime.py b/sfa/util/sfatime.py index 901b4e0d..11cc566b 100644 --- a/sfa/util/sfatime.py +++ b/sfa/util/sfatime.py @@ -1,10 +1,26 @@ +from types import StringTypes import dateutil.parser +import datetime -def utcparse(str): +from sfa.util.sfalogging import logger + +def utcparse(input): """ Translate a string into a time using dateutil.parser.parse but make sure it's in UTC time and strip - the timezone, so that it's compatible with normal datetime.datetime objects""" +the timezone, so that it's compatible with normal datetime.datetime objects. + +For safety this can also handle inputs that are either timestamps, or datetimes +""" - t = dateutil.parser.parse(str) - if not t.utcoffset() is None: - t = t.utcoffset() + t.replace(tzinfo=None) - return t + if isinstance (input, datetime.datetime): + logger.warn ("argument to utcparse already a datetime - doing nothing") + return input + elif isinstance (input, StringTypes): + t = dateutil.parser.parse(input) + if t.utcoffset() is not None: + t = t.utcoffset() + t.replace(tzinfo=None) + return t + elif isinstance (input, (int,float)): + return datetime.datetime.fromtimestamp(input) + else: + logger.error("Unexpected type in utcparse [%s]"%type(input)) +