Merge branch 'master' into senslab2
[sfa.git] / sfa / util / sfatime.py
index 473056e..34f4dce 100644 (file)
@@ -5,7 +5,7 @@ import time
 
 from sfa.util.sfalogging import logger
 
-DATEFORMAT = "%Y-%d-%mT%H:%M:%SZ"
+DATEFORMAT = "%Y-%m-%dT%H:%M:%SZ"
 
 def utcparse(input):
     """ Translate a string into a time using dateutil.parser.parse but make sure it's in UTC time and strip
@@ -13,7 +13,14 @@ the timezone, so that it's compatible with normal datetime.datetime objects.
 
 For safety this can also handle inputs that are either timestamps, or datetimes
 """
-    
+    # perpare the input for the checks below by
+    # casting strings ('1327098335') to ints
+    if isinstance(input, StringTypes):
+        try:
+            input = int(input)
+        except ValueError:
+            pass
+          
     if isinstance (input, datetime.datetime):
         logger.warn ("argument to utcparse already a datetime - doing nothing")
         return input
@@ -22,7 +29,7 @@ For safety this can also handle inputs that are either timestamps, or datetimes
         if t.utcoffset() is not None:
             t = t.utcoffset() + t.replace(tzinfo=None)
         return t
-    elif isinstance (input, (int,float)):
+    elif isinstance (input, (int,float,long)):
         return datetime.datetime.fromtimestamp(input)
     else:
         logger.error("Unexpected type in utcparse [%s]"%type(input))
@@ -34,7 +41,7 @@ def datetime_to_utc(input):
     return time.gmtime(datetime_to_epoch(input))    
 
 def datetime_to_epoch(input):
-    return time.mktime(input.timetuple())
+    return int(time.mktime(input.timetuple()))