diff --git a/libraries/joomla/factory.php b/libraries/joomla/factory.php
index <HASH>..<HASH> 100644
--- a/libraries/joomla/factory.php
+++ b/libraries/joomla/factory.php
@@ -506,18 +506,20 @@ abstract class JFactory
 				$classname = 'JDate';
 			}
 		}
-		$key = $time . '-' . $tzOffset;
-
-		//		if (!isset($instances[$classname][$key])) {
-		$tmp = new $classname($time, $tzOffset);
-		//We need to serialize to break the reference
-		//			$instances[$classname][$key] = serialize($tmp);
-		//			unset($tmp);
-		//		}
-
-		//		$date = unserialize($instances[$classname][$key]);
-		//		return $date;
-		return $tmp;
+
+		$key = $time . '-' . ($tzOffset instanceof DateTimeZone ? $tzOffset->getName() : (string) $tzOffset);
+
+		if (!isset($instances[$classname][$key]))
+		{
+			$tmp = new $classname($time, $tzOffset);
+			// We need to serialize to break the reference
+			$instances[$classname][$key] = serialize($tmp);
+			unset($tmp);
+		}
+
+		$date = unserialize($instances[$classname][$key]);
+
+		return $date;
 	}
 
 	/**
Fixes error in JFactory::getDate where timezone is passed as a string.
Restores backward compatibility of JFactory::getDate to Joomla <I> in
that is caches the date for a given time.