我从我的数据库时间收到的时间就像hh:mm:ss,在javascript中我想把时间像hh:mm 这是我的代码
var time = '10:01:30';
console.log(time);
var res = formatTime(time);
console.log(res);
function formatTime(time) {
var result = false, m;
var re = /^\s*([01]?\d|2[0-3]):?([0-5]\d)\s*$/;
if ((m = time.match(re))) {
result = (m[1].length === 2 ? "" : "0") + m[1] + ":" + m[2];
console.log(result);
}
}

由于我收到" false",任何帮助,该功能都运作良好?
由于
答案 0 :(得分:2)
可能是我在问题中遗漏了一些内容,但如果您只是想从hh:mm
中提取hh:mm:ss
部分,那么这应该可行:
// var time = "hh:mm:ss";
var time = "10:01:30";
var splitTime = time.trim().split(":"); // trim to remove any leading and trailing spaces
var formattedTime = splitTime[0] +":"+ splitTime[1];
console.log( formattedTime );

答案 1 :(得分:1)
你能不能做到以下几点?:
function formatTime(time) {
var array = time.split(':');
return array[0] + ':' + array[1];
}
答案 2 :(得分:1)
另一个答案(使用split
)无疑是更简单的方法。
但是,如果您想知道为什么正则表达式不匹配,那是因为您的正则表达式正在寻找第一个(hh
)块,然后是第二个(mm
)块,但之后期待空白直到行结束 - ss
部分没有允许。
我相当苛刻地改变了这一点,以便在mm
部分后允许任何内容直到行尾。见下文。
另外,如果您想知道为什么formatTime
函数会返回undefined
,因为您忘了return result
var time = '10:01:30';
console.log(time);
var res = formatTime(time);
console.log(res);
function formatTime(time) {
var result = false, m;
var re = /^\s*([01]?\d|2[0-3]):?([0-5]\d).*$/;
if ((m = time.match(re))) {
result = (m[1].length === 2 ? "" : "0") + m[1] + ":" + m[2];
console.log(result);
}
return result;
}
答案 3 :(得分:0)
我会考虑使用本机Date对象来进行格式化。这将为您做一些事情:
NaN
。使用此方法,示例代码可能如下所示:
function stripSecondsFromTimeString(time) {
// create data object representing current date
// the date is not really important here other than allowing
// you to format a fully valid Date object with your time fragment
var day = new Date();
var dateInput = day.toDateString() + ' ' + time;
var date = new Date(dateInput);
// validate we were able to get useful Date object
if(isNaN(date.getHours())) {
return NaN;
}
// log out some values so you can see how you might more fully work with Date object
console.log(date.toString());
console.log(date.getDate());
console.log(date.getHours());
console.log(date.getMinutes());
// prepare to return string
var hours = '' + date.getHours();
if(hours.length === 1) {
hours = '0' + hours;
}
var minutes = '' + date.getMinutes();
if(minutes.length === 1) {
minutes = '0' + minutes;
}
return hours + ':' + minutes;
}
// Usage examples
// your input time fragment
var inputTime = '10:01:30';
var formattedTime = stripSecondsFromTimeString(inputTime);
console.log(formattedTime);
// example failure case
var invalidTime = 'foo';
console.log(stripSecondsFromTimeString(invalidTime));