611 Stimmen

Javascript fügt führende Nullen zum Datum hinzu

Ich habe dieses Skript erstellt, um das Datum für 10 Tage im Voraus im Format tt/mm/jjjj zu berechnen:

var MyDate = new Date();
var MyDateString = new Date();
MyDate.setDate(MyDate.getDate()+10);
MyDateString = MyDate.getDate() + '/' + (MyDate.getMonth()+1) + '/' + MyDate.getFullYear();

Ich muss das Datum mit führenden Nullen in der Tages- und Monatskomponente anzeigen lassen, indem ich diese Regeln zum Skript hinzufüge. Ich kann nicht scheinen, um es zum Funktionieren zu bringen.

if (MyDate.getMonth < 10)getMonth = '0' + getMonth;

y

if (MyDate.getDate <10)get.Date = '0' + getDate;

Wenn mir jemand zeigen könnte, wo ich diese in das Skript einfügen kann, wäre ich sehr dankbar.

6voto

Hellojeffy Punkte 1811

Sie können den ternären Operator verwenden, um das Datum wie eine "if"-Anweisung zu formatieren.

Zum Beispiel:

var MyDate = new Date();
MyDate.setDate(MyDate.getDate()+10);
var MyDateString = (MyDate.getDate() < 10 ? '0' + MyDate.getDate() : MyDate.getDate()) + '/' + ((d.getMonth()+1) < 10 ? '0' + (d.getMonth()+1) : (d.getMonth()+1)) + '/' + MyDate.getFullYear();

Also

(MyDate.getDate() < 10 ? '0' + MyDate.getDate() : MyDate.getDate())

wäre ähnlich wie eine if-Anweisung, bei der, wenn getDate() einen Wert kleiner als 10 zurückgibt, eine '0' + das Datum zurückgegeben wird, oder aber das Datum, wenn es größer als 10 ist (da wir die führende 0 nicht hinzufügen müssen). Dasselbe gilt für den Monat.

Bearbeiten: Ich habe vergessen, dass getMonth mit 0 beginnt, also habe ich das +1 hinzugefügt, um es zu berücksichtigen. Natürlich könnte man auch einfach sagen, dass d.getMonth() < 9 ist, aber ich dachte, das +1 würde das Verständnis erleichtern.

4voto

Alex Punkte 41
function formatDate(jsDate){
  // add leading zeroes to jsDate when days or months are < 10.. 
  // i.e.
  //     formatDate(new Date("1/3/2013")); 
  // returns
  //    "01/03/2103"
  ////////////////////
  return (jsDate.getDate()<10?("0"+jsDate.getDate()):jsDate.getDate()) + "/" + 
      ((jsDate.getMonth()+1)<10?("0"+(jsDate.getMonth()+1)):(jsDate.getMonth()+1)) + "/" + 
      jsDate.getFullYear();
}

4voto

MJ55 Punkte 273

Sie können Optionen als Parameter für die Datumsformatierung angeben. Der erste Parameter ist für das Gebietsschema, das Sie möglicherweise nicht benötigen, und der zweite für Optionen. Für mehr Informationen besuchen Sie https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

var date = new Date(Date.UTC(2012, 1, 1, 3, 0, 0));
var options = { year: 'numeric', month: '2-digit', day: '2-digit' };
console.log(date.toLocaleDateString(undefined,options));

3voto

francis Punkte 65

Ergänzend zur Antwort von @modiX: So funktioniert es... DAS NICHT LEER LASSEN

today.toLocaleDateString("default", {year: "numeric", month: "2-digit", day: "2-digit"})

3voto

Robbie Bardijn Punkte 465

Ich habe die richtige Antwort auf diese Frage in eine Funktion verpackt, die mehrere führende Nullen addieren kann, aber standardmäßig 1 Null addiert.

function zeroFill(nr, depth){
  depth = (depth === undefined)? 1 : depth;

  var zero = "0";
  for (var i = 0; i < depth; ++i) {
    zero += "0";
  }

  return (zero + nr).slice(-(depth + 1));
}

für die Arbeit mit Zahlen und nicht mehr als 2 Ziffern, ist dies auch ein Ansatz:

function zeroFill(i) {
    return (i < 10 ? '0' : '') + i
  }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X