如何在html中以格式为小时:分钟上午/下午将日期类对象转换为html中的表单时间。
答案 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