diff --git a/kotlin-jira-client/kotlin-jira-client-sdk/src/main/kotlin/com/linkedplanet/kotlinjiraclient/sdk/field/SdkJiraField.kt b/kotlin-jira-client/kotlin-jira-client-sdk/src/main/kotlin/com/linkedplanet/kotlinjiraclient/sdk/field/SdkJiraField.kt index dbb41a56..c6aceb47 100644 --- a/kotlin-jira-client/kotlin-jira-client-sdk/src/main/kotlin/com/linkedplanet/kotlinjiraclient/sdk/field/SdkJiraField.kt +++ b/kotlin-jira-client/kotlin-jira-client-sdk/src/main/kotlin/com/linkedplanet/kotlinjiraclient/sdk/field/SdkJiraField.kt @@ -21,11 +21,13 @@ package com.linkedplanet.kotlinjiraclient.sdk.field import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.config.IssueTypeManager +import com.atlassian.jira.datetime.DateTimeFormatterFactory +import com.atlassian.jira.datetime.DateTimeStyle import com.atlassian.jira.issue.IssueInputParameters import com.atlassian.jira.issue.context.IssueContext import com.atlassian.jira.issue.context.IssueContextImpl +import com.atlassian.jira.issue.customfields.CustomFieldTypes import com.atlassian.jira.issue.fields.CustomField -import com.atlassian.jira.timezone.TimeZoneManager import com.linkedplanet.kotlinjiraclient.api.field.JiraAssigneeField import com.linkedplanet.kotlinjiraclient.api.field.JiraCustomDateTimeField import com.linkedplanet.kotlinjiraclient.api.field.JiraCustomField @@ -43,12 +45,10 @@ import com.linkedplanet.kotlinjiraclient.api.field.JiraProjectField import com.linkedplanet.kotlinjiraclient.api.field.JiraReporterField import com.linkedplanet.kotlinjiraclient.api.field.JiraSummaryField import java.time.ZonedDateTime -import java.time.format.DateTimeFormatter -private val customFieldManager by lazy { ComponentAccessor.getCustomFieldManager() } -private val issueTypeManager by lazy { ComponentAccessor.getComponent(IssueTypeManager::class.java) } -private val optionsManager by lazy { ComponentAccessor.getOptionsManager() } -private val timezoneManager by lazy { ComponentAccessor.getComponent(TimeZoneManager::class.java) } +private val customFieldManager = ComponentAccessor.getCustomFieldManager() +private val issueTypeManager = ComponentAccessor.getComponent(IssueTypeManager::class.java) +private val optionsManager = ComponentAccessor.getOptionsManager() interface SdkJiraField { fun render(issue: IssueInputParameters) @@ -154,14 +154,18 @@ class SdkJiraCustomDateTimeField( dateTime: ZonedDateTime ) : JiraCustomDateTimeField(customFieldName, dateTime), SdkJiraField { - private val dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MMM/yy h:mm a") + private val formatterFactory = ComponentAccessor.getComponent(DateTimeFormatterFactory::class.java) override fun render(issue: IssueInputParameters) { - val dateTimeInUserTimeZone = dateTime.withZoneSameInstant(timezoneManager.loggedInUserTimeZone.toZoneId()) - issue.addCustomFieldValue( - customField().id, - dateTimeInUserTimeZone.format(dateTimeFormatter) - ) + val customField = customField() + + val dateTimeStyle = when (customField.customFieldType.key) { + CustomFieldTypes.DATEPICKER.key -> DateTimeStyle.DATE_PICKER + else -> DateTimeStyle.DATE_TIME_PICKER + } + val dateTimeFormatter = formatterFactory.formatter().forLoggedInUser().withStyle(dateTimeStyle) + val dateInUserFormat = dateTimeFormatter.format(java.util.Date.from(dateTime.toInstant())) + issue.addCustomFieldValue(customField.id, dateInUserFormat) } }