One way to add an offset is to extend the functionality of the jkUtils - SolarAltitude program, just add the following code:
First add an extra function anywhere between existing functions:
SolarAltitude.addMinutes = function (date, minutes) {
return new Date(date.getTime() + minutes*60000);
};
Then add the following four lines to the SolarAltitude.saveTimer block.
SolarAltitude.saveTimer("jkUtils.SolarAltitude.Morning.Sunrise.Start.Offset",SolarAltitude.addMinutes(sun.sunrise, -30),0);
SolarAltitude.saveTimer("jkUtils.SolarAltitude.Morning.Sunrise.End.Offset",SolarAltitude.addMinutes(sun.sunriseEnd, 30),-1);
SolarAltitude.saveTimer("jkUtils.SolarAltitude.Evening.Sunset.Start.Offset",SolarAltitude.addMinutes(sun.sunsetStart, -30),0);
SolarAltitude.saveTimer("jkUtils.SolarAltitude.Evening.Sunset.End.Offset",SolarAltitude.addMinutes(sun.sunset, 30),-1);
I've added 30 minutes to the Sunset.End and Sunrise.End values and subtracted 30 minutes from the Sunrise.Start and Sunset.Start values.
You can set this value to whatever you want, or even better, make it an Input Field
hg.Program.AddInputField("jkUtils.SolarAltitude.Offset", "30", "Offset in minutes");