2013-10-16 17 views
6

Qualsiasi corpo può aiutarmi come ottenere il formato HH: MM am/pm dal formato HH: MM: SS am/pm.Come mostrare solo ore e minuti da javascript date.toLocaleTimeString()?

My javascript code is : 

    function prettyDate2(time){ 
     var date = new Date(parseInt(time)); 
     var localeSpecificTime = date.toLocaleTimeString(); 
     return localeSpecificTimel; 
     } 

Ma torna ora in questo formato HH: MM: SS am/pm .Ma il mio requisito del cliente è HH: MM am/pm. Per favore aiutatemi. Grazie in anticipo.

risposta

8

Si può fare questo:

function prettyDate2(time){ 
    var date = new Date(parseInt(time)); 
    var localeSpecificTime = date.toLocaleTimeString(); 
    return localeSpecificTime.replace(/:\d+ /, ' '); 
} 

La regex è spogliando i secondi da quella stringa.

Come menzionato nel commento qui, this answer è migliore in tutte le impostazioni internazionali.

+2

tenere a mente che per il locale per non inglese, questa soluzione non funzionerà, in quanto la regex di \ d non rileva i numeri. Esempio: 'date.toLocaleTimeString ('ar')'. Pertanto, la risposta di _ @ Dan Cron_ è migliore per l'uso generale. – Roshdy

1

Si può anche provare in questo modo: -

function timeformat(date) { 
    var h = date.getHours(); 
    var m = date.getMinutes(); 
    var x = h >= 12 ? 'pm' : 'am'; 
    h = h % 12; 
    h = h ? h : 12; 
    m = m < 10 ? '0'+m: m; 
    var mytime= h + ':' + m + ' ' + x; 
    return mytime; 
} 

o qualcosa di simile: -

new Date('16/10/2013 20:57:34').toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, "$1$3") 
3

Utilizzare la libreria Intl.DateTimeFormat.

function prettyDate2(time){ 
    var date = new Date(parseInt(time)); 
    var options = {hour: "numeric", minute: "numeric"}; 
    return new Intl.DateTimeFormat("en-US", options).format(date); 
    } 
11

Here è una versione più generale di questa domanda, che copre locali diversi da en-US. Inoltre, ci possono essere problemi di parsing l'uscita da toLocaleTimeString(), in modo CJLopez suggerisce di utilizzare questo, invece:

var dateWithouthSecond = new Date(); 
dateWithouthSecond.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'}); 
+0

estremamente utile! grazie mille per questo secondo argomento !! – Roshdy

+0

molto utile. Grazie. – hkg328

0

ho postato la mia soluzione qui https://stackoverflow.com/a/48595422/6204133

var textTime = new Date(sunriseMills + offsetCityMills + offsetDeviceMills) 
       .toLocaleTimeString('en-US', { hour: 'numeric', minute: 'numeric' }); 
Problemi correlati