检查某个时刻在特定时区是否有效

Check whether a moment is valid in a specific timezone

我正在使用时刻时区。我收到日期时间字符串(iso 8601)和时区(被 moment-timezone 识别为时区的字符串)并且需要检查日期在时区中是否有效。换句话说,如果时区是 CET:

请注意,自夏令时结束那天起,以下内容都是有效的(并且应该这样识别)。

我目前的做法是将moment-object转换为需要的timezone,然后检查timezone offset是否相同,但我觉得应该有更简单的方法...

function isValidInTimezone(date, timezone) {
  return date.format("Z") === date.clone().tz(timezone).format("Z");
}
function isValidInTimeZone(dateString, timeZone) {
  var m = moment.parseZone(dateString);
  return m.utcOffset() === m.tz(timeZone).utcOffset();
}

timeZone参数应该是一个完整的区域id,例如"Europe/Paris"。一些缩写可能有效,但只有那些为向后兼容而明确建立的缩写才有效。