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が4文字の時間をすべて置き換える必要があることを明確にした後に編集]

関数を2番目の引数として使用して、次のものを置き換えることができます。

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

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

正規表現で括弧を使用して「キャプチャ」された文字列の部分は、2番目の引数(ここではp1と呼ばれます)として関数に渡されます。

実用的な例については、http://jsfiddle.net/bjelline/pb8d2/を参照してください。

注:正規表現では、2015年を午後8時を過ぎた四半期を除いて区別することはできず、年を時間に変換します。

于 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 に答える