2016-03-03 4 views
2

Comment convertir "4/10/2016, 16:00:00" à 16:00 en javascript? Ai-je besoin d'utiliser la sous-chaîne ou avons-nous une méthode de date pour effectuer cette conversion? Bon conseil.JavaScript: Comment convertir "4/10/2016, 16:00:00" à 16:00?

jsFiddle: https://goo.gl/rppCaq

+0

's [0] + s.slice (-2)'? –

+0

Pouvez-vous s'il vous plaît élaborer le code? – user5970552

+0

Les méthodes de chaîne sont préférées car vous devez analyser la chaîne pour obtenir une date de toute façon, puis appeler les méthodes pour formater la sortie. Vous pourriez aussi bien analyser la chaîne au format que vous voulez et ignorer la date. – RobG

Répondre

2

Essayez d'utiliser String.prototype.match() avec RegExp/(\d+)(?=:\d+:\d+)|([A-Z]+)(?=$)/g pour correspondre à chiffres, suivi par ":" puis le chiffre suivi par ":" suivie d'un chiffre ou "A" par "Z" suivie d'extrémité d'entrée; Array.prototype.join() caractère spatial " " comme paramètre

var date = "4/10/2016, 4:00:00PM"; 
 
var res = date.match(/(\d+)(?=:\d+:\d+)|([A-Z]+)(?=$)/g); 
 
document.body.textContent = res.join(" ");

+0

désolé, cela ne fonctionne pas sur Internet Explorer 11 :( – user5970552

+0

@ user5970552 _ "cela ne fonctionne pas sur Internet Explorer 11" _ Pouvez-vous décrire "ne fonctionne pas"? – guest271314

+0

même morceau de code que vous avez donné fonctionne bien sur Firefox et pas sur IE11 – user5970552

1

Puisque vous avez une chaîne personnalisée que la date, essayez quelque chose comme ci-dessous. Ce n'est pas très joli mais fera le travail pour ce scénario.

var timeArr = "4/10/2016, 4:00:00PM".split(', ')[1].split(':'); 

var hr = timeArr[0]; 
var min = timeArr[1]; 
var sec = timeArr[2].match(/\d/g).join(''); 
var ampm = timeArr[2].replace(sec, ''); 

console.log(hr, min, sec, ampm); 
1

Comme avec d'autres réponses, juste mess avec la chaîne:

function getHours(s) { 
 
    var b = (s.split(' ')[1] || '').match(/\d+|[a-z]+/ig) || []; 
 
    return /^\d+$/.test(b[0]) && /^[a-z]/i.test(b[3])? b[0] + ' ' + b[3] : 'can\'t parse that...'; 
 
} 
 

 
document.write(getHours('4/10/2016, 4:00:00PM')); 
 
document.write('<br>' + getHours('parse this'));

+0

encore je ne reçois pas le résultat, créé un jsfiddle, pourriez-vous s'il vous plaît https://jsfiddle.net/etpo99ua/20/ – user5970552