Moment.js、FullCalendar.js 日期时间与时区偏移量的比较

Moment.js, FullCalendar.js datetime comparisons with timezone offsets

我很困惑。

我有一个文本框,其中填充了日期和时间(字符串),例如“09/07/2021 10:30”。

我将这个字符串转换成这样的时刻:

var suggestedDateObj = moment(suggestedDate, 'DD/MM/YYYY HH:mm');

然后我想检查这个日期和时间是否在 fullcalendar.js 事件对象的时间段之间。我是这样做的:

var startDateObj = moment(value.start);
var endDateObj = moment(value.end);
if (suggestedDateObj.isBetween(startDateObj, endDateObj)) {}

但是...它不起作用。这是由于时区偏移(我认为)。

suggestedDateObj returns 一个 UTC 偏移量为 +0100(英国夏令时)的值

但是我的日历事件对象 return 一个 UTC 偏移量为 +0000 的日期。因此,当我检查 '09/07/2021 10:30 +0100' 是否在 '09/07/2021 10:30 +0000 之间时' 和 '09/07/2021 11:30 +0000' 它不起作用!

我想我的问题真的是:

谢谢。

更新 嗯....这可能有用....虽然感觉有点笨拙:

 var tmoment1 = moment(suggestedDate, 'DD/MM/YYYY HH:mm');    
            //create default date with specific timezone offset of zero
            var suggestedDateObj = moment().utcOffset(0);
            //set the date and time
            suggestedDateObj.set({
                day: tmoment1.day(),
                month: tmoment1.month(),
                year: tmoment1.year(),
                hour: tmoment1.hour(),
                minute: tmoment1.minute(),
                second: 0
            });

您可以像这样在 utc 中生成 suggestedDateObj

var suggestedDateObj = moment.utc(suggestedDate, 'DD/MM/YYYY HH:mm');`

对于.isBetween()我建议你像第四个参数一样使用方括号,就像documentation说的那样。

if (suggestedDateObj.isBetween(startDateObj, endDateObj, undefined, '[]'))

方括号表示检查必须包括限制器的日期