您可以轻松解析startTime
它是否采用明确定义的格式,然后使用setHours
and setMinutes
:Live example | 资源
var startDateTime;
var parts = /^(\d+):(\d+) (AM|PM)$/.exec(startTime);
if (parts) {
hours = parseInt(parts[1], 10);
minutes = parseInt(parts[2], 10);
if (parts[3] === "PM" && hours !== 12) {
hours += 12;
}
else if (parts[3] === "AM" && hours === 12) {
hours = 0;
}
if (!isNaN(hours) && !isNaN(minutes)) {
startDateTime = new Date(startDate.getTime());
startDateTime.setHours(hours);
startDateTime.setMinutes(minutes);
}
}
...或类似的规定。
请注意,关键是您所说的事实startDate
是一个Date
实例。以上假设我们在 JavaScript 环境的时区内工作,而不是跨区域工作。如果您从日期字符串开始,并且该字符串指定了 JavaScript 环境时区以外的时区,然后您将其转换为Date
via new Date("Tues Jul....")
,那么您必须确保调整结果Date
以使用本地时间环境或 UTC;如果您将其调整为 UTC,您将使用setUTCHours
and setUTCSeconds
above 而不是setHours
and setSeconds
。同样,如果您的起点是日期字符串,并且该字符串指定不同的时区,这只是一个问题从上面的代码运行的时区。