将字符串格式化为时间格式,如 hh:mm

Format string to time format like hh:mm

本文关键字:hh mm 格式 字符串 格式化 时间      更新时间:2023-09-26

>我有一个输入字段:

<input id="szReminderTime" type="text" value="" maxlength="5"
    onblur="format_reminder_time(this.value);"
    name="askForQuoteAry[szReminderTime]" />

Time字段的格式hh:mm在 24 小时制上,例如 7:3011:4516:1019:1122:43

如果运算符键入句点(11.45),逗号(11,45),空格(11 45),短划线(11-45)或什么都没有(1145945),那么它们中的每一个都应该被认为是具有相同的含义。 然后,一旦运算符离开字段,该值应用冒号显示,即 11:459:45.

为了实现这一点,我使用了以下 JavaScript 函数,它对我来说效果很好,但是任何人都可以优化我的代码,因为我的代码对我来说看起来不太好吗?

如果这只是一个日期格式化位置,我建议您使用普通的javascipt进行格式化。

如果不是,http://momentjs.com/是大多数日期格式问题的解决方案。

moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago

http://momentjs.com/docs/#/displaying/

对于您的示例,它只是"hh:mm"描述中的描述。

将 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.3 表示上午 9:03:

// 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

你可以在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 这个助手:日期助手.js