javascript - 更改 HH 的时间字符串 :mm am/pm to 24 hour time

标签 javascript date time

我得到一个像这样的可变字符串:

上午 8:45

如果是下午,想要将其转换为 24 小时制。这样我就可以放下上午/下午并将其与其他东西一起使用。

我可以像这样轻松地删除上午/下午:

function replaceEnds(string) {
        string = string.replace("am", "");
        string = string.replace("pm", "");
        return string;
    }

当然,如果我这样做,我不知道字符串是上午还是下午,所以我不知道要在字符串上加上 12 小时使其成为 24 小时。

有人知道我该如何解决这个问题吗?我绝对不能更改我从变量中获得的输入,它始终是小时(12 小时制)、分钟以及上午或下午。

最佳答案

使用 moment.js :

moment(string, 'h:mm a').format('H:mm');

如果您想手动完成,这将是我的解决方案:

function to24Hour(str) {
    var tokens = /([10]?\d):([0-5]\d) ([ap]m)/i.exec(str);
    if (tokens == null) { return null; }
    if (tokens[3].toLowerCase() === 'pm' && tokens[1] !== '12') {
        tokens[1] = '' + (12 + (+tokens[1]));
    } else if (tokens[3].toLowerCase() === 'am' && tokens[1] === '12') {
        tokens[1] = '00';
    }
    return tokens[1] + ':' + tokens[2];
}

手动解决方案更难理解、不够灵活、缺少一些错误检查并且需要单元测试。一般来说,您通常应该更喜欢经过良好测试的流行库的解决方案,而不是您自己的解决方案(如果经过良好测试的库可用)。

关于javascript - 更改 HH 的时间字符串 :mm am/pm to 24 hour time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17664174/

相关文章:

javascript - 如何打开带有自定义链接的窗口?

java - 在 Joda-Time 中,将 DateTime 设置为月初

date - 如何在 Java 8 中找到本月的第三个星期五?

regex - Cocoa 中的时间正则表达式

java - 如何正确转换xsd :dateTime to date in europe?

datetime - 处理亚秒精度 UTC 时间算术中的闰秒

javascript - 是否可以向 chart.js 折线图添加阴影?

javascript - 从 Ember.js 中的嵌套对象计算属性

javascript - Vue.js 组件不显示组件方法中的数据

php - 生成最近两周的日期范围?