Source code for sos.qgstime

# -*- coding: utf-8 -*-
"""
 QgsTime... classes
"""

import abc
from dateutil import parser as DateTimeParser
from datetime import datetime
#import pytz

[docs]class QgsTime (object): """ Abstract base class for QgsTime types """ __metadata__ = abc.ABCMeta TimeInstant = 1 TimePeriod = 2 @abc.abstractmethod def __init__(self, timePrimitive=0): self._timePrimitive = timePrimitive self._values = ["latest" for _ in range(timePrimitive)] def _parse (self, dt): """ :param dt: datetime, latest or first """ if dt in ["latest", "first"]: return dt try: dt = DateTimeParser.parse(dt) except Exception: dt = datetime.today().date() #.utcnow() #dt.replace(tzinfo=pytz.utc) finally: return dt @property def primitive (self): return self._timePrimitive def _getDate (self, i): try: return self._values[i].date() except AttributeError: return self._values[i] except: return def _getTime (self, i): try: return self._values[i].time() except: return def __str__(self): toStr = lambda dt : dt if isinstance (dt, str) else str(dt).replace(" ", "T") return " ".join([toStr(dt) for dt in self._values])
[docs]class QgsTimePeriod (QgsTime): """ Represents a time period with begin date and time and end date and time """ def __init__(self, begin="", end=""): super(QgsTimePeriod, self).__init__(QgsTime.TimePeriod) self._values[0] = self._parse(begin) self._values[1] = self._parse(end) @property def beginDate (self): return self._getDate(0) @property def beginTime (self): return self._getTime(0) @property def endDate (self): return self._getDate(1) @property def endTime (self): return self._getTime(1)
[docs]class QgsTimeInstant (QgsTime): """ Represents a time instant """ def __init__(self, time=""): super(QgsTimeInstant, self).__init__(QgsTime.TimeInstant) self._values[0] = self._parse(time) @property def date (self): return self._getDate(0) @property def time (self): return self._getTime(0)