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

时间:2016-03-14 01:23:51

标签: javascript date datetime timepicker

如何在html中以格式为小时:分钟上午/下午将日期类对象转换为html中的表单时间。

2 个答案:

答案 0 :(得分:2)

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

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);

答案 1 :(得分:1)

我们假设您的输入格式为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