I ended up writing a Service called UTCtoNZT to do the conversions. It takes a UTC DateTime as an input, and returns a DateTime in New Zealand Time.
var endDate = ["3 Apr 2022 03:00:00 +1300","2 Apr 2023 03:00:00 +1300",
"7 Apr 2024 03:00:00 +1300","6 Apr 2025 03:00:00 +1300",
"5 Apr 2026 03:00:00 +1300","4 Apr 2027 03:00:00 +1300"];
var startDate = ["25 Sep 2022 02:00:00 +1200","24 Sep 2023 02:00:00 +1200",
"29 Sep 2024 02:00:00 +1200", "28 Sep 2025 02:00:00 +1200",
"27 Sep 2026 02:00:00 +1200", "26 Sep 2027 02:00:00 +1200"];
const yearOffset = 2022; // array index 0 is year 2022.
var year = dateTime.getUTCFullYear();
var i = year - yearOffset;
var endDate_i = new Date(endDate[i]);
var startDate_i = new Date(startDate[i]);
var hourOffset = 0;
if (dateTime < endDate_i || dateTime > startDate_i) {
hourOffset = 13; // + 13 hours
} else {
hourOffset = 12;
}
var NZdateTime = new Date(dateTime.getTime() + hourOffset * 60 * 60000);
var result = NZdateTime;