When coping the value of planned_end_date from task_sla to custom field on incident, there is a 1 hour difference.
Release or Environment
The value on the incident record is from the database, which matches the value on the task_sla. However, the incident does not update on load to account for timezone changes as the task_sla does.
When setting the value on the incident record use getDisplayValue() or implement a client script to update the display value when the incident loads.