@@ -21,11 +21,13 @@ package com.linkedplanet.kotlinjiraclient.sdk.field
2121
2222import com.atlassian.jira.component.ComponentAccessor
2323import com.atlassian.jira.config.IssueTypeManager
24+ import com.atlassian.jira.datetime.DateTimeFormatterFactory
25+ import com.atlassian.jira.datetime.DateTimeStyle
2426import com.atlassian.jira.issue.IssueInputParameters
2527import com.atlassian.jira.issue.context.IssueContext
2628import com.atlassian.jira.issue.context.IssueContextImpl
29+ import com.atlassian.jira.issue.customfields.CustomFieldTypes
2730import com.atlassian.jira.issue.fields.CustomField
28- import com.atlassian.jira.timezone.TimeZoneManager
2931import com.linkedplanet.kotlinjiraclient.api.field.JiraAssigneeField
3032import com.linkedplanet.kotlinjiraclient.api.field.JiraCustomDateTimeField
3133import com.linkedplanet.kotlinjiraclient.api.field.JiraCustomField
@@ -43,12 +45,10 @@ import com.linkedplanet.kotlinjiraclient.api.field.JiraProjectField
4345import com.linkedplanet.kotlinjiraclient.api.field.JiraReporterField
4446import com.linkedplanet.kotlinjiraclient.api.field.JiraSummaryField
4547import java.time.ZonedDateTime
46- import java.time.format.DateTimeFormatter
4748
48- private val customFieldManager by lazy { ComponentAccessor .getCustomFieldManager() }
49- private val issueTypeManager by lazy { ComponentAccessor .getComponent(IssueTypeManager ::class .java) }
50- private val optionsManager by lazy { ComponentAccessor .getOptionsManager() }
51- private val timezoneManager by lazy { ComponentAccessor .getComponent(TimeZoneManager ::class .java) }
49+ private val customFieldManager = ComponentAccessor .getCustomFieldManager()
50+ private val issueTypeManager = ComponentAccessor .getComponent(IssueTypeManager ::class .java)
51+ private val optionsManager = ComponentAccessor .getOptionsManager()
5252
5353interface SdkJiraField {
5454 fun render (issue : IssueInputParameters )
@@ -154,14 +154,18 @@ class SdkJiraCustomDateTimeField(
154154 dateTime : ZonedDateTime
155155) : JiraCustomDateTimeField(customFieldName, dateTime), SdkJiraField {
156156
157- private val dateTimeFormatter = DateTimeFormatter .ofPattern( " dd/MMM/yy h:mm a " )
157+ private val formatterFactory = ComponentAccessor .getComponent( DateTimeFormatterFactory :: class .java )
158158
159159 override fun render (issue : IssueInputParameters ) {
160- val dateTimeInUserTimeZone = dateTime.withZoneSameInstant(timezoneManager.loggedInUserTimeZone.toZoneId())
161- issue.addCustomFieldValue(
162- customField().id,
163- dateTimeInUserTimeZone.format(dateTimeFormatter)
164- )
160+ val customField = customField()
161+
162+ val dateTimeStyle = when (customField.customFieldType.key) {
163+ CustomFieldTypes .DATEPICKER .key -> DateTimeStyle .DATE_PICKER
164+ else -> DateTimeStyle .DATE_TIME_PICKER
165+ }
166+ val dateTimeFormatter = formatterFactory.formatter().forLoggedInUser().withStyle(dateTimeStyle)
167+ val dateInUserFormat = dateTimeFormatter.format(java.util.Date .from(dateTime.toInstant()))
168+ issue.addCustomFieldValue(customField.id, dateInUserFormat)
165169 }
166170}
167171
0 commit comments