@@ -29,10 +29,12 @@ |
|
year = self.parseData(line, "YEAR") |
month = self.parseData(line, "MONTH") |
- dt = datetime.date(year, month, 1) |
+ dt_min = datetime.date(year, month, 1) |
+ days = monthrange(year, month)[1] |
+ dt_max = datetime.date(year, month, days) |
|
- if start_date and dt < start_date: continue |
- if end_date and dt > end_date: break |
+ if start_date and dt_max < start_date: continue |
+ if end_date and dt_min > end_date: break |
|
# Check if this line contains data of interest |
element = self.parseData(line, "ELEMENT") |
@@ -111,14 +111,14 @@ |
|
if start_date_str: |
try: |
- start_date = datetime.datetime.strptime(start_date_str, "%m/%d/%Y").date() |
+ start_date = datetime.datetime.strptime(start_date_str, "%m/%d/%Y") |
except: |
- start_date = datetime.datetime.strptime(start_date_str, "%Y-%m-%d").date() |
+ start_date = datetime.datetime.strptime(start_date_str, "%Y-%m-%d") |
if end_date_str: |
try: |
- end_date = datetime.datetime.strptime(end_date_str, "%m/%d/%Y").date() |
+ end_date = datetime.datetime.strptime(end_date_str, "%m/%d/%Y") |
except: |
- end_date = datetime.datetime.strptime(end_date_str, "%Y-%m-%d").date() |
+ end_date = datetime.datetime.strptime(end_date_str, "%Y-%m-%d") |
|
return start_date, end_date |
|
@@ -676,7 +676,7 @@ |
climate_data = [["station ID",] + header] |
|
# The period of record of the retrieved data. |
- data_start_date, data_end_date = datetime.datetime.now().date(), datetime.date(1800, 1, 1) |
+ data_start_date, data_end_date = datetime.datetime.now(), datetime.datetime(1800, 1, 1) |
# date range for each station |
data_dates = {} |
|
@@ -857,16 +857,22 @@ |
ishourly = len(s) > 10 |
tzindex = None |
if ishourly: |
- tzindex = s.rindex('-') |
- s = s[:tzindex] |
- e = e[:tzindex] |
+ # clip timezone out |
+ if 'T' in s: |
+ tzindex = s.rindex('-') |
+ s = s[:tzindex] |
+ e = e[:tzindex] |
|
if not fmt: |
fmt = '%Y-%m-%d' |
if ishourly: |
- # timestamp format (ie, 2015-12-30T00:00:00-07:00) |
- fmt += 'T%H:%M:%S' |
- |
+ if 'T' in s: |
+ # timestamp format (ie, 2015-12-30T00:00:00-07:00) |
+ fmt += 'T%H:%M:%S' |
+ else: |
+ # missing timestamp (ie, 2015-12-30 00:00:00) |
+ fmt += ' %H:%M:%S' |
+ |
if isinstance(s, basestring): |
s = datetime.datetime.strptime(s, fmt) |
e = datetime.datetime.strptime(e, fmt) |
@@ -1332,7 +1338,7 @@ |
""" Parses a single line of data from a raw data response """ |
weather_data = None |
tokens = line.split(",") |
- date = datetime.datetime.strptime(tokens[columns["DATE"]], "%m/%d/%Y").date() |
+ date = datetime.datetime.strptime(tokens[columns["DATE"]], "%m/%d/%Y") |
station_id = self.data_finder.attributes['id'] |
pref = station_id.split(":")[1] + " " |
if date: |