2015-10-30 56 views
0

我需要在我的網站從英語改變所有的時間,法國即下午7:15 = 19小時15我沒有訪問到後端更改時間格式。所以我使用indexOf和.replace。它的工作原理,但僅限於p中的第一個PM,我如何循環它們。這是迄今爲止的代碼。jQuery的轉換時間從英語翻譯成法語

<script> 
function myFunction() { 

var str = "12:00 AM test text at 9:10 PM this se second 6:00 PM doe not works."; 


var matchs = str.match(/PM/gi); //can be used for loop amount 

var n = str.indexOf("PM")-6; //first digit before pm 
var n2 = str.indexOf("PM")-5; //second digit before pm 
var res = str.charAt(n) + str.charAt(n2);// add together 

var myInteger = parseInt(res)+12;// make it ind and add 12 

var str1= str.replace(res ,' '+myInteger).replace('PM','').replace(/PM/g,'').replace(/:/g,' h ').replace(/00/g,' ').replace('AM','');// replace 
alert(str1); 
document.getElementById("demo").innerHTML = str1 
} 

感謝

+0

可能重複的[轉換日期到JavaScript中的另一個時區](http://stackoverflow.com/questions/10087819/convert-date-to-another-timezone-in-javascript) – rottenoats

回答

1

也許是這樣的:

var str = $('#time').text(); 
 

 
var t = str.match(/[\d:]+(?= PM)/g); 
 
for (var i = 0; i < t.length; i++) { 
 
    var match = t[i].split(':'); 
 
    var th = +match[0] + 12 + ' h'; 
 
    var tm = ' ' + match[1]; 
 
    var ft = th + tm; 
 
    var str = str.replace(t[i], ft).replace(/PM/g, ''); 
 
    $('#time').html(str); 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id = "time">12:00 AM test text at 9:10 PM this se second 6:00 PM doe not works.</div>

正則表達式匹配的是數字(\d)且僅當後跟PM(前導空格)結腸。然後將每場比賽分成:,並將第12場比賽加入第一場比賽(24小時制)。

+0

很確定OP想要替換它們在源文本中,不只是將它們解析出來;) –

+0

是的,你可能是對的。更新了答案。 – sideroxylon