getMinutes () 0-9 - Come visualizzare numeri a due cifre?


136
var date = "2012-01-18T16:03";
var date = new Date(date);

console.log(date.getMinutes());
console.log(date.getMinutes().length)

Questo restituisce 3.

  1. Come posso farlo restituire '03'?
  2. Perché il .lengthritorno non viene individuato?

Ho provato questo, ma non ha funzionato:

Se strlen == 1alloranum = ('0' + num);


Solo per aggiungere, il ritorno di .getMinutes()è un numero intero, non è possibile accedere .lengthda un numero intero. Per fare ciò (sconsigliato di gestire le date) è analizzare il numero in una stringa e quindi controllarne la lunghezza. Ad esempio:date.getMinutes().toString().length
ViniciusPires il

Risposte:


276
var date = new Date("2012-01-18T16:03");

console.log( (date.getMinutes()<10?'0':'') + date.getMinutes() );

2
Cosa significa questo <10?'0':''?
user1063287

@ user1063287 è una dichiarazione in
Aryeh Armon,

5
@ user1063287 Significa: "Se getMinutes () è inferiore a 10, restituisce uno 0, se maggiore, restituisce una stringa vuota.
Michael Giovanni Pumo,


(condizione? vero: falso) in PHP puoi omettere la vera dichiarazione (condizione?: falso) in JS che useresti (condizione || falso) Operatore ternario en.wikipedia.org/wiki/Ternary_operation
llange

203

Yikes queste risposte non sono grandi, anche il post più alto è stato tolto. Ecco la conversione int / string tra browser e cross-browser. Inoltre il mio consiglio è di non usare un nome variabile 'date' con codice come date = Date(...)dove ti affidi fortemente alla distinzione tra maiuscole e minuscole (funziona, ma rischioso quando lavori con codice server / browser in lingue diverse con regole diverse) . Supponendo quindi la data javascript in un var current_date:

mins = ('0'+current_date.getMinutes()).slice(-2);

La tecnica è prendere i 2 caratteri più a destra (slice(-2))di "0" anteposti al valore di stringa di getMinutes(). Così:

"0"+"12" -> "012".slice(-2) -> "12"

e

"0"+"1" -> "01".slice(-2) -> "01"

7
Soluzione elegante
Oldenborg il

1
L'uso di slice (-2) è controintuitivo, ma mi piace.
ChrisFox,

33

Un altro modo breve è riempire i minuti con uno zero iniziale usando:

String(date.getMinutes()).padStart(2, "0");

Significato: allunga la stringa di due caratteri, se manca un carattere, imposta 0in questa posizione.

Consulta i documenti su str.padStart (targetLength, padString)


18

Elegante funzione ES6 per formattare una data in hh:mm:ss:

const leadingZero = (num) => `0${num}`.slice(-2);

const formatTime = (date) =>
  [date.getHours(), date.getMinutes(), date.getSeconds()]
  .map(leadingZero)
  .join(':');

12

Vorrei fornire una soluzione più accurata al problema, se possibile. La risposta accettata è molto buona. Ma l'avrei fatto così.

Date.prototype.getFullMinutes = function () {
   if (this.getMinutes() < 10) {
       return '0' + this.getMinutes();
   }
   return this.getMinutes();
};

Ora se vuoi usare questo.

console.log(date.getFullMinutes());

10

Suggerisco:

var minutes = data.getMinutes();
minutes = minutes > 9 ? minutes : '0' + minutes;

è una funzione che chiama meno. È sempre bene pensare alle prestazioni. È anche breve;


4

dovresti controllare se è inferiore a 10 ... non cercarne la lunghezza, perché questo è un numero e non una stringa


4

Un'altra opzione:

var dateTime = new Date();
var minutesTwoDigitsWithLeadingZero = ("0" + dateTime.getMinutes()).substr(-2);

Mi piace questa soluzione, ma sembra che IE8 e le versioni precedenti non supportino numeri negativi per substr. w3schools.com/jsref/jsref_substr.asp
GtEx


3

.lengthnon è definito perché getMinutesrestituisce un numero, non una stringa. i numeri non hanno una lengthproprietà. Si potrebbe fare

var m = "" + date.getMinutes();

per renderlo una stringa, quindi controllare la lunghezza (si dovrebbe verificare length === 1, non 0).


3

I numeri non hanno una lunghezza, ma puoi facilmente convertire il numero in una stringa, controllare la lunghezza e quindi anteporre lo 0 se è necessario:

var strMonth = '' + date.getMinutes ();
if (strMonth.length == 1) {
  strMonth = '0' + strMonth;
}

3

Non vedo nessuna risposta ES6 qui, quindi ne aggiungerò una usando la formattazione StandardJS

// ES6 String formatting example
const time = new Date()
const tempMinutes = new Date.getMinutes()
const minutes = (tempMinutes < 10) ? `0${tempMinutes}` : tempMinutes

3

Presumo che avresti bisogno del valore come stringa. Puoi usare il codice qui sotto. Restituirà sempre dandoti i minuti a due cifre come stringa.

var date = new Date(date);
var min = date.getMinutes();

if (min < 10) {
min = '0' + min;
} else {
min = min + '';
}
console.log(min);

Spero che questo ti aiuti.


1

Di solito uso questo pezzo di codice:

var start = new Date(timestamp),
    startMinutes = start.getMinutes() < 10 ? '0' + start.getMinutes() : start.getMinutes();

È abbastanza simile alla risposta accettata da @ogur ma non concatena una stringa vuota nel caso in cui 0 non sia necessario. Non sono sicuro che sia meglio. Solo un altro modo per farlo!


1

puoi usare moment js:

moment(date).format('mm')

esempio : moment('2019-10-29T21:08').format('mm') ==> 08

spero che aiuti qualcuno


molto bello quando uno sta usando il momento, grazie :-)
Nadine,

0
$(".min").append( (date.getMinutes()<10?'0':'') + date.getMinutes() );

nuovo su JS, quindi questo è stato molto utile per la maggior parte dei ppl guardando anche questo nuovo prob, quindi è così che l'ho fatto mostrare nel div chiamato "class =" min "

spero che aiuti qualcuno


0

cosa ne pensi di questo? per me funziona! :)

var d = new Date();
var minutes = d.getMinutes().toString().replace(/^(\d)$/, '0$1');

0

Un'altra opzione per ottenere minuti o ore a due cifre.

var date = new Date("2012-01-18T16:03");

var minutes = date.toTimeString().slice(3, 5); 
var hours   = date.toTimeString().slice(0, 2); 


-2

Se stai usando AngularJS nel tuo progetto, basta iniettare $ filter e usarlo come qui:

$filter('date')(value, 'HH:mm')

Puoi anche formattare l'output nel modello, più sui filtri qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.