我有下面的代码来检查时间段是否可用。基本上,用户A会告诉我们它们什么时候可用,我们会向用户B显示所有可用的30分钟时隙。我正试图让这段代码与当前时刻一起工作。但是它不能正常工作。所有的日期都以utc的形式存储在mysql数据库中,我使用的是nodejs和reactjs。发生的事情是,当从一个时区转换到另一个时区时,我无法转换。东部时区未转换为utc。
convertTime12to24 (time12h) {
const [time, modifier] = time12h.split(' ');
let [hours, minutes] = time.split(':');
if (hours === '12') {
hours = '00';
}
if (modifier === 'PM') {
hours = parseInt(hours, 10) + 12;
}
return `${hours}:${minutes}`;
}
convertToMins (timeString) {
const a = timeString.split(":");
return (+a[0]) * 60 + (+a[1]);
}
checkIfTimeSlotAvailable (value) {
var day = this.state.dateObject.day();
if (this.props.availableTimeslots && this.props.availableTimeslots[day]) {
const timeParts = this.convertTime12to24(value);
let dateObject = Object.assign({}, this.state.dateObject);
dateObject = moment(dateObject).set("hour", timeParts[0]);
dateObject = moment(dateObject).set("minute", timeParts[1]);
if (value === "10:00 AM") {
alert(dateObject);
}
const timeInTz = this.convertToMins(moment(dateObject).tz(this.props.timezone).utc().format('HH:mm'));
const timeInTzIn30 = timeInTz + 30;
var times = this.props.availableTimeslots[day];
for (var i = 0; i < times.length; i += 1) {
var startTime = this.convertToMins(times[i].startTime);
var endTime = this.convertToMins(times[i].endTime);
if (value === "10:00 AM") {
console.dir(timeParts + " " + moment(dateObject).tz(this.props.timezone).utc().format('HH:mm A') + " " + timeInTz + " " + startTime + " " + endTime);
}
if (startTime <= timeInTz && timeInTzIn30 <= endTime) {
console.dir(value + " " + startTime + " " + timeInTz + " " + endTime);
return true;
}
}
}
我做错了什么?