diff --git a/core/js/share.js b/core/js/share.js
index e45dc7dd42416047ffbc637c00bdff3ecb999d15..36ee39d8eabe2698cfcb8e973fe5be04351806bf 100644
--- a/core/js/share.js
+++ b/core/js/share.js
@@ -482,7 +482,14 @@ $(document).ready(function() {
 		if (this.checked) {
 			OC.Share.showExpirationDate('');
 		} else {
-			$('#expirationDate').hide();
+			var itemType = $('#dropdown').data('item-type');
+			var itemSource = $('#dropdown').data('item-source');
+			$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'setExpirationDate', itemType: itemType, itemSource: itemSource, date: '' }, function(result) {
+				if (!result || result.status !== 'success') {
+					OC.dialogs.alert(t('core', 'Error'), t('core', 'Error unsetting expiration date'));
+				}
+				$('#expirationDate').hide();
+			});
 		}
 	});
 	
diff --git a/lib/public/share.php b/lib/public/share.php
index 6ef984732b921f2ca682c378f6d333c06c4ff170..1039d6f0dbfe492b975f2338a95ba59f75e759e1 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -420,8 +420,12 @@ class Share {
 	public static function setExpirationDate($itemType, $itemSource, $date) {
 		if ($items = self::getItems($itemType, $itemSource, null, null, \OC_User::getUser(), self::FORMAT_NONE, null, -1, false)) {
 			if (!empty($items)) {
-				$date = new \DateTime($date);
-				$date = date('Y-m-d H:i', $date->format('U') - $date->getOffset());
+				if ($date == '') {
+					$date = null;
+				} else {
+					$date = new \DateTime($date);
+					$date = date('Y-m-d H:i', $date->format('U') - $date->getOffset());
+				}
 				$query = \OC_DB::prepare('UPDATE `*PREFIX*share` SET `expiration` = ? WHERE `id` = ?');
 				foreach ($items as $item) {
 					$query->execute(array($date, $item['id']));