2013-10-13 13 views
13

Come posso ottenere questo hh: mm: ss dall'oggetto data?jquery: come ottenere hh: mm: ss dall'oggetto data?

var d = new Date(); // for now 
datetext = d.getHours()+":"+d.getMinutes()+":"+d.getSeconds(); 

ottengo questo risultato sotto talvolta,

12:10:1 

che dovrebbe essere

12:10:01 

assumo questo accade ora e minuti pure.

Quindi sono dopo questo

01:01:01 

Non 1: 1: 1

+1

Come verificare se ciascun valore è inferiore a 10 e anteporre uno zero? – Pointy

+0

sì, hai ragione - buona idea! – laukok

+2

Dai un'occhiata qui: http://stackoverflow.com/questions/5914020/javascript-date-to-string – rd3n

risposta

27

Solution - (tl; versione dr)

datetext = d.toTimeString().split(' ')[0]

Spiegazione:

toTimeString restituisce il tempo completo. L'abbiamo diviso per spazio per ottenere solo il componente orario, quindi prendiamo il primo valore che è utile. :)

completo flusso:

d = new Date(); 
// d is "Sun Oct 13 2013 20:32:01 GMT+0530 (India Standard Time)" 
datetext = d.toTimeString(); 
// datestring is "20:32:01 GMT+0530 (India Standard Time)" 
// Split with ' ' and we get: ["20:32:01", "GMT+0530", "(India", "Standard", "Time)"] 
// Take the first value from array :) 
datetext = datetext.split(' ')[0]; 

Nota: Questo non richiede di includere tutti i file esterni o librerie, quindi, il tempo richiesto per l'esecuzione sarebbe più veloce.

+0

Davvero bella, soluzione a linea singola :) Bene. – maddy

5

Ti suggerisco di effettuare il checkout di alcune librerie di data/ora. Moment.js è un buon esempio.

Si potrebbe fare semplicemente come di seguito

var d = new Date(); 
var formatteddatestr = moment(d).format('hh:mm:ss a'); 

Ecco un example from fiddle

+0

Quel violino mi ha dato "04:07:37 pm" invece del "16:07:37" richiesto nella domanda. – user3070485

+0

Ti suggerisco di consultare la documentazione. Certo, puoi modificare il modo in cui vuoi se modifichi il formattatore. –

10

È possibile utilizzare questo frammento di codice. L'ho anche aggiunto a jsfiddle e aggiunto commenti più sicuri, quindi assicurati di controllare il violino.

Se si utilizza jQuery, chiamarlo all'interno della funzione pronta. Altrimenti potresti usare il semplice JavaScript per aggiornare il valore del tuo campo.

$(document).ready(function(){ 
    var d = new Date(); 
    var formatted_time = time_format(d); 
    $('#yourTimeField').text(formatted_time); 
}); 

Aggiungere questi due metodi per lo script (si potrebbe anche incollarlo in un unico file, come è nel jsfiddle frammento di codice):

function time_format(d) { 
    hours = format_two_digits(d.getHours()); 
    minutes = format_two_digits(d.getMinutes()); 
    seconds = format_two_digits(d.getSeconds()); 
    return hours + ":" + minutes + ":" + seconds; 
} 

function format_two_digits(n) { 
    return n < 10 ? '0' + n : n; 
} 

Questo è tutto :) Speranza che aiuta:)

+1

Preferisco questa risposta piuttosto che accettata perché qui si utilizzano ore, minuti e secondi reali invece di "tagliare ciecamente" la stringa. –

1

Puoi anche provare a utilizzare http://momentjs.com/. Una libreria di date javascript per l'analisi, la convalida, la manipolazione e la formattazione delle date.

Problemi correlati