unix_time.py 1.55 KiB
from __future__ import unicode_literals
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
from builtins import zip
from future import standard_library
standard_library.install_aliases()
from datetime import datetime, date
import numpy as np
timestamp0 = datetime.utcfromtimestamp(0)
def to_unix(dateTime):
try:
return (dateTime - timestamp0).total_seconds()
except:
if hasattr(dateTime, "__len__"):
return [(dt - timestamp0).total_seconds() for dt in dateTime]
raise
def from_unix_old(sec):
if np.isnan(sec):
return datetime.utcfromtimestamp(0)
return datetime.utcfromtimestamp(sec)
day_dict = {}
def from_unix(sec):
global day_dict
if isinstance(sec, (float, int)):
if np.isnan(sec):
return datetime.utcfromtimestamp(0)
return datetime.utcfromtimestamp(sec)
else:
sec = np.array(sec)
ms = np.atleast_1d((sec * 1000000 % 1000000).astype(np.int))
sec = sec.astype(np.int)
S = np.atleast_1d(sec % 60)
M = np.atleast_1d(sec % 3600 // 60)
H = np.atleast_1d(sec % 86400 // 3600)
d = np.atleast_1d(sec // 86400)
for du in np.unique(d):
if du not in day_dict:
day_dict[du] = date.fromordinal(719163 + du).timetuple()[:3]
y, m, d = zip(*[day_dict[d_] for d_ in d])
return ([datetime(*ymdhmsu) for ymdhmsu in zip(y, m, d, H.tolist(), M.tolist(), S.tolist(), ms.tolist())])