0

有了这行代码

$("body").html($("body").html().replace(/1800/g,'6:00pm'));

我可以替换这个词,但我怎样才能用这个脚本让它更有活力呢?

var getFormattedTime = function (fourDigitTime){
    var hours24 = parseInt(fourDigitTime.substring(0,2));
    var hours = ((hours24 + 11) % 12) + 1;
    var amPm = hours24 > 11 ? 'pm' : 'am';
    var minutes = fourDigitTime.substring(2);

    return hours + ':' + minutes + amPm;
};

我的 HTML 代码是例如

Your class will start at 1900, please be there by 1845.

将计入哪个

Your class will start at 07:00pm, please be there by 06:45pm.

我试过这个:

$("body").html($("body").html().replace(fourDigitTime, getFormattedTime(fourDigitTime)));

var fourDigitTime = document.getElementById('fourDigitTime').value;

var getFormattedTime = function (fourDigitTime){
var hours24 = parseInt(fourDigitTime.substring(0,2));
var hours = ((hours24 + 11) % 12) + 1;
var amPm = hours24 > 11 ? 'pm' : 'am';
var minutes = fourDigitTime.substring(2);

return hours + ':' + minutes + amPm;
};

这没用..

4

2 回答 2

1

[在 EmersonF 澄清应该替换所有四个字母时间后编辑]

您可以使用函数作为第二个参数来替换:

function formatTime(str, p1) {
   // do something with p1
   return // the formated time
}

$("body").html($("body").html().replace(/(\d?\d\d\d)/g, formatTime));

使用正则表达式中的括号“捕获”的字符串部分作为第二个参数(此处称为 p1)传递给函数

有关工作示例,请参见http://jsfiddle.net/bjelline/pb8d2/

注意:正则表达式不能区分 2015 年,除了 8pm 之后,会将年份转换为时间!

于 2013-01-19T08:47:25.790 回答
0

你可以使用这个:

var time = "1500";

$("body").html($("body").html().replace(time, getFormattedTime(time)));

replace()不必总是regex

于 2013-01-19T09:03:20.163 回答