diff --git a/timeseriesviewer/timeseries.py b/timeseriesviewer/timeseries.py
index de38fb0701df1f97700568921c437360f6271f6b..214d235c44b9f9dd3a2e17a2d3fa1ece632e0a79 100644
--- a/timeseriesviewer/timeseries.py
+++ b/timeseriesviewer/timeseries.py
@@ -628,20 +628,40 @@ def parseWavelength(lyr):
 
 
 
-def parseAcquisitionDate(text):
+def extractDateFromLandsatID(text):
     match = regLandsatSceneID.search(text)
     if match:
         id = match.group()
         return getDateTime64FromYYYYDOY(id[9:16])
-    match = regYYYYMMDD.search(text)
+    return None
+
+def extractDateFromRapidEyeID(text):
+    pass
+
+def extractDateFromISO(text):
+    match = regYYYY.search(text)
     if match:
         return np.datetime64(match.group())
+    return None
+
+def extractDateFromYYYYDOY(text):
     match = regYYYYDOY.search(text)
     if match:
         return getDateTime64FromYYYYDOY(match.group())
-    match = regYYYY.search(text)
-    if match:
-        return np.datetime64(match.group())
+    return None
+
+DATE_EXTRACTION_FUNCTIONS = []
+DATE_EXTRACTION_FUNCTIONS.append(extractDateFromISO)
+DATE_EXTRACTION_FUNCTIONS.append(extractDateFromLandsatID)
+DATE_EXTRACTION_FUNCTIONS.append(extractDateFromRapidEyeID)
+DATE_EXTRACTION_FUNCTIONS.append(extractDateFromYYYYDOY)
+
+def parseAcquisitionDate(text):
+
+    for func in DATE_EXTRACTION_FUNCTIONS:
+        v = func(text)
+        if isinstance(v, np.datetime64):
+            return v
     return None