我有一个输入字段:
<input id="szReminderTime" type="text" value="" maxlength="5"
onblur="format_reminder_time(this.value);"
name="askForQuoteAry[szReminderTime]" />
{24}小时时Time
字段的格式为hh:mm
,例如7:30
,11:45
,16:10
,19:11
,22:43
。
如果操作员键入句点(11.45
),逗号(11,45
),空格(11 45
),短划线(11-45
)或任何内容( 1145
或945
),其中每一项都应被视为具有相同的含义。然后,一旦操作员离开该字段,该值应该用冒号显示,即11:45
或9:45
。
为了达到这个目的,我使用了以下JavaScript函数,这对我来说很好,但是任何人都可以优化我的代码,因为我的代码看起来不太好吗?
答案 0 :(得分:1)
如果这只是一个日期格式化位置,我建议您使用plain javascipt进行格式化。
如果不是http://momentjs.com/是大多数日期格式问题的解决方案。
moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
http://momentjs.com/docs/#/displaying/
对于您的示例,它只是"hh:mm"
,就像您在说明中所拥有的那样。
答案 1 :(得分:0)
将24小时时间转换为12小时时间的功能相当简单,但是您有一些特殊要求。请考虑以下事项:
// Convert string in 24 hour time to 12 hour hh:mm ap
// Input can be 12:23, 945, 09,12, etc.
function from24to12(s) {
var b = s.replace(/\D/g,'');
var h = b.substring(0, b.length - 2);
var m = b.substring(b.length - 2);
return (h%12 || 12) + ':' + m + ' ' + (h>11? 'PM':'AM');
}
console.log(from24to12('23:15')); // 11:15 PM
console.log(from24to12('015')); // 12:15 AM
console.log(from24to12('1.15')); // 1:15 AM
这假设您不希望小时前导零,并且操作员将始终键入两位数的分钟,例如9.03,而不是9.3。支持后者需要3行代码。
以下内容支持分隔符的任何字符,并且对于9:03 AM也支持9.3:
// Convert string in 24 hour time to 12 hour hh:mm ap
// Input can be 12:23, 945, 09,12, etc.
// Sseparator can be any non-digit. If no separator, assume [h]hmm
function from24to12(s) {
function z(n){return (n<10?'0':'')+n}
var h, m, b, re = /\D/;
// If there's a separator, split on it
// First part is h, second is m
if (re.test(s)) {
b = s.split(re);
h = b[0];
m = z(+b[1]);
// Otherwise, last two chars are mm, first one or two are h
} else {
h = s.substring(0, s.length - 2);
m = s.substring(s.length - 2);
}
return (h%12 || 12) + ':' + m + ' ' + (h>11? 'PM':'AM');
}
console.log(from24to12('23:15')); // 11:15 AM
console.log(from24to12('005')); // 12:05 AM
console.log(from24to12('1.15')); // 1:15 AM
console.log(from24to12('17.5')); // 5:05 PM
答案 2 :(得分:0)
您可以很容易地在Javascript中执行此操作。您可以对此进行扩展以满足您的要求。 请看一下我的剧本:
Date.prototype.dateToday = function (syntax) {
var dateToday = null;
if (syntax === 'dd-mm-yyyy') {
dateToday = (
((this.getDate() < 10) ? '0' + this.getDate() : this.getDate()) + '-' + ((this.getMonth() + 1 < 10) ? '0' + this.getMonth() : this.getMonth()) + '-' + this.getFullYear());
} else if (syntax === 'dd/mm/yyyy') {
dateToday = (
((this.getDate() < 10) ? '0' + this.getDate() : this.getDate()) + '/' + ((this.getMonth() + 1 < 10) ? '0' + this.getMonth() : this.getMonth()) + '/' + this.getFullYear());
} else if (syntax === 'dd-mm-yy') {
var year = this.getFullYear().toString();
dateToday = (
((this.getDate() < 10) ? '0' + this.getDate() : this.getDate()) + '-' + ((this.getMonth() + 1 < 10) ? '0' + this.getMonth() : this.getMonth()) + '-' + year.substr(2, 4));
} else if (syntax === 'dd/mm/yy') {
var year = this.getFullYear().toString();
dateToday = (
((this.getDate() < 10) ? '0' + this.getDate() : this.getDate()) + '/' + ((this.getMonth() + 1 < 10) ? '0' + this.getMonth() : this.getMonth()) + '/' + year.substring(2,4));
}
return dateToday;
};
Date.prototype.timeNow = function (syntax) {
var timeNow = null;
if (syntax === 'hh:mm:ss') {
timeNow = (
((this.getHours() < 10) ? '0' + this.getHours() : this.getHours()) + ':' + ((this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes()) + ':' + ((this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds()));
} else if (syntax === 'hh:mm') {
timeNow = (
((this.getHours() < 10) ? '0' + this.getHours() : this.getHours()) + ':' + ((this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes()) + ':' + ((this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds()));
} else {
timeNow = (
((this.getHours() < 10) ? '0' + this.getHours() : this.getHours()) + ':' + ((this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes()) + ':' + ((this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds()) + '.' + ((this.getMilliseconds() < 10) ? '0' + this.getMilliseconds() : this.getMilliseconds()));
}
return timeNow;
}
Date.prototype.hourNow = function () {
var hours = ((this.getHours() < 10) ? '0' + this.getHours() : this.getHours());
return hours;
}
Date.prototype.minuteNow = function () {
var minutes = ((this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes());
return minutes
};
Date.prototype.secondNow = function () {
var seconds = ((this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds());
return seconds;
};
Date.prototype.milisecondsNow = function () {
var milliseconds = ((this.getMilliseconds() < 10) ? '0' + this.getMilliseconds() : this.getMilliseconds());
return milliseconds;
};
或者看看我的Git这个助手:datehelper.js