diff --git a/opencloudComLibrary/src/main/java/eu/opencloud/android/lib/resources/shares/CreateRemoteShareOperation.kt b/opencloudComLibrary/src/main/java/eu/opencloud/android/lib/resources/shares/CreateRemoteShareOperation.kt index 5dcb5d59f..75a63bc49 100644 --- a/opencloudComLibrary/src/main/java/eu/opencloud/android/lib/resources/shares/CreateRemoteShareOperation.kt +++ b/opencloudComLibrary/src/main/java/eu/opencloud/android/lib/resources/shares/CreateRemoteShareOperation.kt @@ -137,7 +137,9 @@ class CreateRemoteShareOperation( } if (expirationDateInMillis > INIT_EXPIRATION_DATE_IN_MILLIS) { - val dateFormat = SimpleDateFormat(FORMAT_EXPIRATION_DATE, Locale.getDefault()) + val dateFormat = SimpleDateFormat(FORMAT_EXPIRATION_DATE, Locale.getDefault()).apply { + timeZone = java.util.TimeZone.getTimeZone("UTC") + } val expirationDate = Calendar.getInstance() expirationDate.timeInMillis = expirationDateInMillis val formattedExpirationDate = dateFormat.format(expirationDate.time) @@ -197,6 +199,9 @@ class CreateRemoteShareOperation( private const val PARAM_PERMISSIONS = "permissions" //Arguments - constant values - private const val FORMAT_EXPIRATION_DATE = "yyyy-MM-dd" + // ISO-8601 UTC format is required by the backend to correctly parse expiration dates, + // especially for private user/group share creations and updates, ensuring compatibility + // when these features are eventually exposed in the mobile UI. + private const val FORMAT_EXPIRATION_DATE = "yyyy-MM-dd'T'HH:mm:ss'Z'" } } diff --git a/opencloudComLibrary/src/main/java/eu/opencloud/android/lib/resources/shares/UpdateRemoteShareOperation.kt b/opencloudComLibrary/src/main/java/eu/opencloud/android/lib/resources/shares/UpdateRemoteShareOperation.kt index 3834d9353..62e5a2bf5 100644 --- a/opencloudComLibrary/src/main/java/eu/opencloud/android/lib/resources/shares/UpdateRemoteShareOperation.kt +++ b/opencloudComLibrary/src/main/java/eu/opencloud/android/lib/resources/shares/UpdateRemoteShareOperation.kt @@ -159,7 +159,9 @@ class UpdateRemoteShareOperation } else if (expirationDateInMillis > INITIAL_EXPIRATION_DATE_IN_MILLIS) { // set expiration date - val dateFormat = SimpleDateFormat(FORMAT_EXPIRATION_DATE, Locale.getDefault()) + val dateFormat = SimpleDateFormat(FORMAT_EXPIRATION_DATE, Locale.getDefault()).apply { + timeZone = java.util.TimeZone.getTimeZone("UTC") + } val expirationDate = Calendar.getInstance() expirationDate.timeInMillis = expirationDateInMillis val formattedExpirationDate = dateFormat.format(expirationDate.time) @@ -216,7 +218,10 @@ class UpdateRemoteShareOperation private const val PARAM_PERMISSIONS = "permissions" //Arguments - constant values - private const val FORMAT_EXPIRATION_DATE = "yyyy-MM-dd" + // ISO-8601 UTC format is required by the backend to correctly parse expiration dates, + // especially for private user/group share creations and updates, ensuring compatibility + // when these features are eventually exposed in the mobile UI. + private const val FORMAT_EXPIRATION_DATE = "yyyy-MM-dd'T'HH:mm:ss'Z'" private const val INITIAL_EXPIRATION_DATE_IN_MILLIS: Long = 0 } }