Displaying differences for changeset
 
display as  

src/java/python/ghcndDownloader.py

@@ -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")

src/java/python/weatherExtraction.py

@@ -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:

test/service_tests/CoAgMet_V1_0/coagmet_hourly-req.json

@@ -12,7 +12,7 @@
         "description": "'metric' or 'english'"
     }, {
         "name": "start_date",
-        "value": "2015-7-1",
+        "value": "2015-07-01",
         "description": "mm/dd/yy or yyyy-mm-dd"
     }, {
         "name": "end_date",

test/service_tests/GHCND_V1_0/ghcnd-req.json

@@ -11,17 +11,17 @@
         "value": "metric"
     }, {
         "name": "start_date",
-        "value": "1950-1-1"
+        "value": "2012-01-29"
     }, {
         "name": "end_date",
-        "value": "2015-12-31"
+        "value": "2012-10-31"
     }, {
         "name": "IDW_Center",
         "value": [-100, 40],
         "description": "Use inverse-distance-weighting using the given longitude and latitude when calculating the station average."
     }, {
         "name": "generate_average",
-        "value": true,
+        "value": false,
         "description": "Stations will be averaged to produce a single output."
     }]
 }
\ No newline at end of file