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



我正在使用时刻时区。我收到日期时间字符串(ISO 8601)和时区(通过时刻时区识别为时区的字符串),需要检查日期在时区中是否有效。换句话说,如果时区CET

  • 2015-03-03T12:00:00+01:00 --> true(欧洲中部时间)
  • 2015-03-03T12:00:00+02:00 --> false (+02:00 仅在 DST 期间为 CET,3-3 不是 DST)
  • 2015-07-03T12:00:00+01:00 --> false
  • 2015-07-03T12:00:00+02:00 --> true

请注意,以下内容都是有效的(并且应该以这种方式识别),因为当天 DST 结束。

  • 2015-10-25T02:30:00+01:00 --> true
  • 2015-10-25T02:30:00+02:00 --> true

我目前的方法是将时刻对象转换为所需的时区,并检查时区偏移量是否相同,但我觉得应该有更简单的方法......

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" 。 某些缩写可能有效,但只有为向后兼容而明确建立的缩写才有效。

相关内容

  • 没有找到相关文章

最新更新