Hi there!
By using ScriptRunner I'm trying to compare the dates between two custom fields and save the result on another custom field (using the hour unit). Alhtough it seems to not be working 
Here is the code:
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit
final chronoUnit = ChronoUnit.HOURS
def formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
// get custom fields
def customFields = get("/rest/api/2/field")
.asObject(List)
.body
.findAll { (it as Map).custom } as List<Map>
def input1CfId = customFields.find { it.name == 'Incident Start Time' }?.id
def input2CfId = customFields.find { it.name == 'Incident End Time' }?.id
def outputCfId = customFields.find { it.name == 'Incident Duration' }?.id
def projectKey = "PI"
if (issue == null || ((Map)issue.fields.project).key != projectKey) {
logger.info("Wrong Project ${issue.fields.project.key}")
return
}
def input1CfIddate = ZonedDateTime.parse(input1CfId, formatter)
def input2CfIddate = ZonedDateTime.parse(input2CfId, formatter)
if (input1CfIddate == null || input2CfIddate == null) {
logger.info("Calculation using ${input1CfIddate} and ${input2CfIddate} was not possible")
return
}
def output = chronoUnit.between(input1CfIddate, input2CfIddate)
if (output == (issue.fields[outputCfId] as String)) {
logger.info("already been updated")
return
}
put("/rest/api/2/issue/${issue.key}")
.header("Content-Type", "application/json")
.body([
fields:[
(outputCfId): output + " " + chronoUnit.toString().toLowerCase()
]
])
.asString()
Any hints?
Thanks!