mirror of
https://github.com/kennethreitz/maya.git
synced 2026-06-05 23:00:18 +00:00
further
This commit is contained in:
@@ -8,23 +8,64 @@ import warnings
|
||||
import ruamel.yaml
|
||||
warnings.simplefilter('ignore', ruamel.yaml.error.UnsafeLoaderWarning)
|
||||
|
||||
|
||||
import email.utils
|
||||
import time
|
||||
from datetime import datetime as Datetime
|
||||
|
||||
import pytz
|
||||
import humanize
|
||||
import dateparser
|
||||
|
||||
__epoch_start = (1970, 1, 1)
|
||||
|
||||
class MayaDT(object):
|
||||
"""The Maya Datetime object."""
|
||||
def __init__(self, epoch):
|
||||
|
||||
def __init__(self, epoch, timezone='UTC'):
|
||||
super(MayaDT, self).__init__()
|
||||
self._timezone = timezone
|
||||
self._epoch = epoch
|
||||
|
||||
def __repr__(self):
|
||||
return '<MayaDT epoch={}>'.format(self._epoch)
|
||||
|
||||
def datetime(self):
|
||||
return Datetime.fromtimestamp(self._epoch)
|
||||
dt = Datetime.fromtimestamp(self._epoch)
|
||||
return dt.replace(tzinfo=self.timezone)
|
||||
|
||||
@property
|
||||
def year(self):
|
||||
self.datetime().year
|
||||
|
||||
@property
|
||||
def month(self):
|
||||
self.datetime().month
|
||||
|
||||
@property
|
||||
def day(self):
|
||||
self.datetime().day
|
||||
|
||||
@property
|
||||
def hour(self):
|
||||
self.datetime().hour
|
||||
|
||||
@property
|
||||
def minute(self):
|
||||
self.datetime().minute
|
||||
|
||||
@property
|
||||
def second(self):
|
||||
self.datetime().second
|
||||
|
||||
@property
|
||||
def microsecond(self):
|
||||
self.datetime().microsecond
|
||||
|
||||
@property
|
||||
def timezone(self):
|
||||
return pytz.timezone(self._timezone)
|
||||
|
||||
|
||||
def iso8601(self):
|
||||
return '{}Z'.format(self.datetime().isoformat())
|
||||
@@ -32,6 +73,12 @@ class MayaDT(object):
|
||||
def epoch(self):
|
||||
return self._epoch
|
||||
|
||||
def human_date(self):
|
||||
return humanize.naturaldate(self.datetime())
|
||||
|
||||
def human_time(self):
|
||||
return humanize.naturaldate(self.datetime())
|
||||
|
||||
def rfc2822(self):
|
||||
tt = self.datetime().timetuple()
|
||||
ts = time.mktime(tt)
|
||||
@@ -51,5 +98,5 @@ def when(string):
|
||||
dt = dateparser.parse(string)
|
||||
if dt is None:
|
||||
raise ValueError('invalid datetime input specified.')
|
||||
epoch = (dt - Datetime(1970, 1, 1)).total_seconds()
|
||||
epoch = (dt - Datetime(*__epoch_start)).total_seconds()
|
||||
return MayaDT(epoch)
|
||||
Reference in New Issue
Block a user