getMinutes() 0-9 – Wie werden zweistellige Zahlen angezeigt?

Lesezeit: 4 Minuten

Benutzer-Avatar
Markus Fondy

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

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

Dies gibt 3 zurück.

  1. Wie bringe ich ’03’ zurück?
  2. Warum tut .length undefiniert zurückgeben?

Ich habe das versucht, aber es hat nicht funktioniert:

Wenn strlen == 1 dann num = ('0' + num);

  • Nur um hinzuzufügen, die Rückkehr von .getMinutes() ist eine Ganzzahl, auf die Sie nicht zugreifen können .length aus einer ganzen Zahl. Um dies zu erreichen (nicht empfohlen beim Umgang mit Datumsangaben), wird die Zahl in eine Zeichenfolge zerlegt und dann die Länge überprüft. Z.B: date.getMinutes().toString().length

    – ViniciusPires

    26. Juli 2013 um 18:12 Uhr

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

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

  • Was macht das <10?'0':'' bedeuten?

    – Benutzer1063287

    10. Juni 2016 um 11:43 Uhr

  • @ user1063287 es ist eine Inline-if-else-Anweisung

    – Aryeh Armon

    13. Juni 2016 um 11:59 Uhr

  • @user1063287 Das bedeutet: „Wenn getMinutes() kleiner als 10 ist, gib eine 0 zurück, wenn größer, gib eine leere Zeichenkette zurück.

    – Michael Giovanni Pumo

    17. August 2016 um 10:30 Uhr

  • @user1063287 siehe hier developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

    – Schluck

    21. Februar 2019 um 16:11 Uhr

  • (condition?true:false) in PHP kann man die true-Anweisung weglassen (condition?:false) in JS würde man dann (condition||false) Ternary operator verwenden en.wikipedia.org/wiki/Ternary_operation

    – lange

    16. März 2019 um 9:53 Uhr


Benutzer-Avatar
Bam Bam

Yikes, diese Antworten sind nicht großartig, sogar der oberste Beitrag wurde erhöht. Bitte schön, browserübergreifende und sauberere Int/String-Konvertierung. Außerdem ist mein Ratschlag, keinen Variablennamen “Datum” mit Code wie zu verwenden date = Date(...) wo Sie sich stark auf die Berücksichtigung der Groß- und Kleinschreibung verlassen (es funktioniert, ist aber riskant, wenn Sie mit Server-/Browsercode in verschiedenen Sprachen mit unterschiedlichen Regeln arbeiten). Angenommen, das Javascript-Datum in einer var current_date:

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

Die Technik besteht darin, die 2 Zeichen ganz rechts zu nehmen (slice(-2)) von “0”, die dem Zeichenfolgenwert von vorangestellt wird getMinutes(). So:

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

und

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

  • Die Verwendung von Slice(-2) ist kontraintuitiv, aber ich mag es.

    – ChrisFox

    22. November 2017 um 10:06 Uhr

Eine andere kurze Möglichkeit besteht darin, die Minuten mit einer führenden Null zu füllen, indem Sie Folgendes verwenden:

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

Bedeutung: Die Zeichenfolge zwei Zeichen lang machen, wenn ein Zeichen fehlt, dann setzen 0 an dieser Stelle.

Siehe Dokumente unter str.padStart (Ziellänge, PadString)

  • So eine tolle Antwort

    – Snsxn

    27. Oktober 2020 um 19:06 Uhr

  • Wow! das ist die Art von Antwort, nach der ich gesucht habe

    – Nuwi

    7. Dezember 2020 um 16:54 Uhr

  • Obwohl mir diese Antwort sehr gut gefallen hat, hat sie bei mir leider nicht funktioniert (in Tasker Jslet, fürs Protokoll). Die akzeptierte Antwort ist Workaround-isch, aber idiotensicher!

    – Melwin

    25. März 2021 um 15:48 Uhr

  • Ich kommentiere SO oft nicht, aber ich fühlte mich gezwungen zu sagen, dass dies die richtige Antwort für das vorliegende Problem ist. Für eine Ganzzahl gibt es keinen Unterschied zwischen 5 und 05, es spielt nur eine Rolle, wenn Sie den Wert als Zeichenfolge behandeln möchten, in diesem Fall müssen Sie Zeichenfolgenfunktionen verwenden.

    – bläulicher

    11. Juli 2021 um 19:16 Uhr

Elegante ES6-Funktion zum Formatieren eines Datums hh:mm:ss:

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

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

Benutzer-Avatar
Hamed Mosalla

Verwenden der ECMAScript-Internationalisierungs-API, Mehr Info:

const date_string = "2012-01-18T16:03";
const date = new Date(date_string);
const twoDigitMinutes = date.toLocaleString("en-us", {year: 'numeric', month: 'numeric', day: 'numeric', hour: '2-digit', minute: '2-digit', second: "2-digit"});

console.log(twoDigitMinutes);

  • Kam im November 2020 hierher und dies ist die sicherste Antwort!

    – Tim Daubenschütz

    10. November 2020 um 13:35 Uhr

Benutzer-Avatar
KapteinMarshall

Ich würde gerne eine ordentlichere Lösung für das Problem bereitstellen, wenn ich darf. Die akzeptierte Antwort ist sehr gut. Aber ich hätte es so gemacht.

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

Nun, wenn Sie dies verwenden möchten.

console.log(date.getFullMinutes());

  • Kam im November 2020 hierher und dies ist die sicherste Antwort!

    – Tim Daubenschütz

    10. November 2020 um 13:35 Uhr

Benutzer-Avatar
Benutzer2846569

Ich schlage vor:

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

es ist ein Funktionsaufruf weniger. Es ist immer gut, an Leistung zu denken. Es ist auch kurz;

1282740cookie-checkgetMinutes() 0-9 – Wie werden zweistellige Zahlen angezeigt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy