Milestone "Due On" field defaults to 7:00 when set by v3 API

When I create or update a Milestone using the v3 API, the “Due On” field always defaults to the last 7:00 before the date-time that I specify. For example, if I set “Due On” to “2018-05-14T01:00:00Z”, the value of the field actually ends up being “2018-05-13T07:00:00Z” (so 7:00 the day before). If I set “Due On” to “2018-05-14T08:00:00Z”, the value of the field ends up being “2018-05-14T07:00:00Z” (7:00 earlier that day).

Can someone confirm that this is the expected behaviour? Is there any way to get the field to use the exact date-time value that I entered?

Bit of an update - sometimes it sets the date back to the latest instance of 7:00 AM; other times it goes back to 8:00 AM. It seems it depends on whether you’re in DST or not.

I’m hoping to get a bit of clarification on how exactly this works.

This is an artifact of how GitHub was originally designed. To my recollection, all timestamps in the database are normalized to Pacific time. So yes, this is the expected behavior.

Thanks for the reply. Just to confirm, it’s not just that they’re being set back to a certain timezone - it’s that they’re being set back to a particular time in that timezone. So it doesn’t matter if you you try to set the time to 1:00 PM, 5:00 PM or 8:00 PM - it gets set back to 7:00 AM or 8:00 AM regardless. Is that expected too?

Yes, because midnight Pacific time is 7AM or 8AM UTC time depending on whether Pacific time is in daylight savings or not on that date.