moments-js is quite broken for timezones
these new libraries are just as broken as the old ones :"
so long, new libraries
holy christ, battle fought and won. The solution is horrible: inspecting the generated moment object for correctness, then iterating through incrementing/decrementing minute count until the hour value is matched. If unpossible, we know we have an invalid date and can throw an exception. Moment-js, you are a PITA.