diff --git a/plugins/FeedsParser.inc b/plugins/FeedsParser.inc
index 24ae01c..f900f47 100644
--- a/plugins/FeedsParser.inc
+++ b/plugins/FeedsParser.inc
@@ -563,24 +563,11 @@ class FeedsDateTime extends DateTime {
   private $_serialized_timezone;
 
   /**
-   * Helper function to prepare the object during serialization.
-   *
-   * We are extending a core class and core classes cannot be serialized.
+   * The original time value passed into the constructor.
    *
-   * Ref: http://bugs.php.net/41334, http://bugs.php.net/39821
-   */
-  public function __sleep() {
-    $this->_serialized_time = $this->format('c');
-    $this->_serialized_timezone = $this->getTimezone()->getName();
-    return array('_serialized_time', '_serialized_timezone');
-  }
-
-  /**
-   * Upon unserializing, we must re-build ourselves using local variables.
+   * @var mixed
    */
-  public function __wakeup() {
-    $this->__construct($this->_serialized_time, new DateTimeZone($this->_serialized_timezone));
-  }
+  protected $originalValue;
 
   /**
    * Overridden constructor.
@@ -592,6 +579,8 @@ class FeedsDateTime extends DateTime {
    *   PHP DateTimeZone object, NULL allowed
    */
   public function __construct($time = '', $tz = NULL) {
+    $this->originalValue = $time;
+
     if (is_numeric($time)) {
       // Assume UNIX timestamp if it doesn't look like a simple year.
       if (strlen($time) > 4) {
@@ -630,6 +619,43 @@ class FeedsDateTime extends DateTime {
   }
 
   /**
+   * Helper function to prepare the object during serialization.
+   *
+   * We are extending a core class and core classes cannot be serialized.
+   *
+   * Ref: http://bugs.php.net/41334, http://bugs.php.net/39821
+   */
+  public function __sleep() {
+    $this->_serialized_time = $this->format('c');
+    $this->_serialized_timezone = $this->getTimezone()->getName();
+    return array('_serialized_time', '_serialized_timezone');
+  }
+
+  /**
+   * Upon unserializing, we must re-build ourselves using local variables.
+   */
+  public function __wakeup() {
+    $this->__construct($this->_serialized_time, new DateTimeZone($this->_serialized_timezone));
+  }
+
+  /**
+   * Returns the string representation.
+   *
+   * Will try to use the literal input, if that is a string. Fallsback to
+   * ISO-8601.
+   *
+   * @return string
+   *   The string version of this DateTime object.
+   */
+  public function __toString() {
+    if (is_scalar($this->originalValue)) {
+      return (string) $this->originalValue;
+    }
+
+    return $this->format(self::ISO8601);
+  }
+
+  /**
    * This function will keep this object's values by default.
    */
   public function merge(FeedsDateTime $other) {
@@ -743,6 +769,7 @@ class FeedsDateTime extends DateTime {
   protected function toArray() {
     return array('year' => $this->format('Y'), 'month' => $this->format('m'), 'day' => $this->format('d'), 'hour' => $this->format('H'), 'minute' => $this->format('i'), 'second' => $this->format('s'), 'zone' => $this->format('e'));
   }
+
 }
 
 /**
