--- webform_original.module	2012-02-27 03:54:10.000000000 -0500
+++ webform.module	2012-03-08 11:45:28.000000000 -0500
@@ -3527,11 +3527,51 @@ function webform_strtodate($format, $str
     }
   }
   else {
+	  if(!strtotime($string)){//if strtotime() fails because of its limitations
+          if(preg_match("/\d{4}/", $string, $absolute)){//if the date string contains a year
+            return webform_safe_strtodate($format, $string);
+          }
+          if(strpos($string, "year") && preg_match("/[+-]/", $string, $relative)){//if the date string is relative in years
+			$current_year = date('Y');
+			$current_date = date($format);
+			$relative_date = explode(" ", $string);
+			list($operator,$value) = sscanf($relative_date[0],'%[+-]%d');
+			switch($operator) {
+				case '+' :
+					$year = $current_year + $value;
+					break;
+				case '-' :
+					$year = $current_year - $value;
+					break;
+			}
+			return str_replace($current_year, $year, $current_date);
+		  }
+	  }
     return date($format, strtotime($string));
   }
 }
 
 /**
+ * Work around PHP strtotime() limitations.
+ */
+function webform_safe_strtodate($format, $string){
+    preg_match("/\d{4}/", $string, $match);
+    $year = intval($match[0]);//converting the year to integer
+    if($year >= 2038){
+        $new_year = 2000;//new_year will be for sure < 2038
+        $new_date = date($format, strtotime(str_replace($year, $new_year, $string)));//replacing the year with the new_year, try strtotime, rendering the date
+        return str_replace($new_year, $year, $new_date);//returning the date with the correct year
+	}
+	if($year <= 1970 && stristr(PHP_OS, "WIN") && !stristr(PHP_OS, "DARWIN")){ //OS seems to be Windows, not Unix nor Mac
+        $diff = 1975 - $year;//calculating the difference between 1975 and the year
+        $new_year = $year + $diff;//year + diff = new_year will be for sure > 1970
+        $new_date = date($format, strtotime(str_replace($year, $new_year, $string)));//replacing the year with the new_year, try strtotime, rendering the date
+        return str_replace($new_year, $year, $new_date);//returning the date with the correct year
+    }
+    return date($format, strtotime($string));//do normal strtotime
+}
+
+/**
  * Get a timestamp in GMT time, ensuring timezone accuracy.
  */
 function webform_strtotime($date) {
