If you retrieve a managed property of type "Date and Time" it will present you a Date object with the timezone of your local pc.
Here is an example of how I retrieve my dates in my timezone:
If I would change my timezone on my local pc to central time US & Canada. The result of my date object will be different:
Formatting the date is also very simple. You already retrieve a date object, so you do not have to cast it to a new date object. You should be able to do this:
var startdate = $getItemValue(ctx, 'RefinableDate05')
// In your HTML you could do this
startdate.value.format('MM-dd-yyyy hh:mm:ss tt');
Now there is a catch. You are using one of the predefined date and time managed properties (RefinableDate..), like you are using right now. By default these predefined managed properties are set to allow multiple values. This MP setting prevents the managed property of returning a date value, it will return a string instead (like this: "2015-02-28T23:00:00Z"). That is why you had to cast the inputValue to a date object in order to format it.
If you uncheck the Allow multiple values setting in the managed property, you would retrieve date objects instead of a string. Once you have done this, and a full crawl has ran, you should get date object instead of strings.