2014-06-06 12 views
7

Metoda Date.prototype.toLocaleTimeString() zwraca ciąg znaków z językową reprezentacją części czasowej tej daty. Jest dostępny dla nowoczesnych przeglądarek.Usuń sekundy z toLocaleTimeString

Niestety, natywna funkcja nie jest w stanie wyłączyć wyjścia sekund. Domyślnie wyprowadza format czasu jak hh:mm:ss lub hh:mm AM/PM itp

sekund: reprezentacja sekundę. Możliwe wartości to "numeric", "2-digit".

Źródło: MDN reference

Oznacza to, że nie można użyć coś jak {second: false}.


ja szukam prosty głupie rozwiązania, aby usunąć sekundy z hh:mm:ss sformatowany ciąg.

var date = new Date(); 
var time = date.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'}); 
console.log(time); // 15:24:07 

regularny wyrażenia nie praca:

time.replace(/:\d\d(|$)/,''); 
time.replace(/(\d{2}:\d{2})(?::\d{2})?(?:am|pm)?/); 
+0

'time.substr (0,5)'? – Halcyon

+0

@Halcyon Dziękujemy, ale to nie działa http://jsfiddle.net/e73GY/ – mate64

+0

'time = time.substr (0,5);' doofus: P – Halcyon

Odpowiedz

5

Można użyć:

var time = date.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'}) 
      .replace(/(:\d{2}| [AP]M)$/, ""); 

btw Google Chrome powraca

new Date().toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'}); 

jako "12:40 PM"

+0

Tak, 'hh: mm: ss' jest domyślny format wyjściowy. Włączyłem format wyświetlania 24h w moim systemie. – mate64

+0

ok dodawanie '.replace (/ (: \ d {2} | [AP] M) $ /," ");' działałoby w obu przypadkach. – anubhava

+0

Nie ma za co, cieszę się, że to się udało. – anubhava

1

Wystarczy dodać inną możliwą kombinację do osiągnięcia tego celu:

(new Date()).toLocaleTimeString().match(/\d{2}:\d{2}|[AMP]+/g).join(' ') 
+0

Dziękuję, ale to całkowicie usuwa czas, kiedy wyjście formatu systemowego jest ustawione na 'hh: mm AM/PM'. – mate64

+0

To faktycznie działa z twoim formatem 'hh: mm: ss' AM lub PM jest opcjonalne w wyrażeniu – Dalorzo