如何将7:30上午时间转换为javascript日期类型?

How to convert 7:30 AM time to javascript Date type?

如何将从 html 中格式为 Hours:Minutes AM/PM 的时间转换为 javascript 中的日期 class 对象。

您可以使用正则表达式解析时间并将其设置为日期对象。

var d = new Date(),
    s ='7:30 AM',
    parts = s.match(/(\d+)\:(\d+) (\w+)/),
    hours = /am/i.test(parts[3]) ? parseInt(parts[1], 10) : parseInt(parts[1], 10) + 12,
    minutes = parseInt(parts[2], 10);

d.setHours(hours, minutes,0,0); // As suggested by @RobG
// d.setHours(hours);
// d.setMinutes(minutes);

console.log(d);

假设您的输入格式为 var time = "7:30 AM"

我们要做的第一件事就是让 AM/PM 离开。

time.split(' ') 给我们 ["7:30", "AM"],所以我们这样做:

var timePeriod = time.split(' ')[1];
time = time.split(' ')[0];

如有任何问题请参阅MDN's article on .split

我们现在有 timePeriod === 'AM'time === '7:30'

我们可以使用相同的技巧来获取小时和分钟。

var hour = time.split(':')[0];
var minute = time.split(':')[1];

只使用数字会更容易,所以我们将在这里对数据进行一些规范化。

if (timePeriod === 'AM') {
    // Do not use `hour += 12` here as that will not convert the result to a number
    hour = 12 + hour
}

现在我们只有数字可以处理了。让我们从当前日期开始:

var currentDate = new Date();

并修改小时和分钟以匹配我们刚刚解析的数据:

currentDate.setHours(hour);
currentDate.setMinutes(minute);

现在我们应该有一个可以合作的日期了!

*如有任何问题请参阅MDN's article on the Date object******