def test_to_datetime(): pydate = datetime.datetime(2016, 1, 1) assert to_datetime(np.datetime64("2016-01-01")) == pydate assert to_datetime(np.datetime64("2016-01-01 00:00:00")) == pydate assert to_datetime(datetime.date(2016, 1, 1)) == pydate assert to_datetime("2016-01-01") == pydate assert to_datetime("2016-01-01T00:00:00") == pydate
def __call__(self, entry): if self.undefined: return True if self.smaller is not None: if entry["size"] is None or entry["size"] > self.smaller: return False if self.larger is not None: if entry["size"] is None or entry["size"] < self.larger: return False creation_date = to_datetime(entry["creation_date"]) if self.newer is not None: if creation_date < self.newer: return False if self.older is not None: if creation_date > self.older: return False if self.match is not None: if not self._match(entry): return False # accesses # last_access return True
def test_to_datetime_2(): assert to_datetime("1851-06-25T00:00") == datetime.datetime(1851, 6, 25) assert to_datetime("1851-06-25T06:00") == datetime.datetime(1851, 6, 25, 6) assert to_datetime("1851-06-25") == datetime.datetime(1851, 6, 25) assert to_datetime("18510625") == datetime.datetime(1851, 6, 25) assert to_datetime(18510625) == datetime.datetime(1851, 6, 25) assert to_datetime("1851-06-25 06:00:00") == datetime.datetime( 1851, 6, 25, 6) assert to_datetime("1851-06-25T06:00:00") == datetime.datetime( 1851, 6, 25, 6) assert to_datetime("1851-06-25T06:00:00Z") == datetime.datetime( 1851, 6, 25, 6, tzinfo=datetime.timezone.utc) assert to_datetime(-2) == to_datetime(0) - datetime.timedelta(days=2)
def __getitem__(self, n): # TODO: move to superclass if isinstance(n, int): return super().__getitem__(n) n = to_datetime(n) for field in self: if field.datetime() == n: return field raise KeyError(n)
def __init__(self, *, bassin="atlantic", url=None): if url is None: url = URLS[bassin.lower()] path = download_and_cache(url) p = [] with open(path) as f: lines = f for line in lines: if line[0] in (" ", "<", "\n"): continue bassin = line[0:2] number = int(line[2:4]) year = int(line[4:8]) name = line[18:28].strip().lower() # id = line[0:8] # http://www.aoml.noaa.gov/hrd/hurdat/hurdat2-format-may2015.pdf for _ in range(0, int(line[33:36])): line = next(lines) knots = float(line[38:41]) pressure = np.NaN if line[43] == "-" else float( line[43:47]) time = "%s-%s-%sZ%s:%s" % ( line[0:4], line[4:6], line[6:8], line[10:12], line[12:14], ) p.append( dict( # id=id, bassin=bassin, number=number, year=year, name=name, time=to_datetime(time), type=line[16], status=line[19:21], lat=float(line[23:27]) * SIGN[line[27]], lon=float(line[30:35]) * SIGN[line[35]], knots=knots, category=category(knots), pressure=pressure, )) self.cyclones = self.annotate(pd.DataFrame(p), style="cyclone-track")
def to_datetime_list(self): # TODO: check if that can be done faster result = set() for s in self.get_fields(): result.add(to_datetime(s.time)) return sorted(result)
def parse_user_date(value): try: return to_datetime(value) except ValueError: return datetime.datetime.now() - humanize.as_timedelta(value)