Formatieren Sie das JavaScript-Datum als JJJJ-MM-TT


382

Ich habe ein Datum mit dem Format Sun May 11,2014. Wie kann ich es 2014-05-11mit JavaScript konvertieren ?

function taskDate(dateMilli) {
    var d = (new Date(dateMilli) + '').split(' ');
    d[2] = d[2] + ',';

    return [d[0], d[1], d[2], d[3]].join(' ');
}

var datemilli = Date.parse('Sun May 11,2014');
console.log(taskDate(datemilli));

Der obige Code gibt mir das gleiche Datumsformat sun may 11,2014. Wie kann ich das beheben?


7
Ich bezweifle, dass der obige Code Ihnen etwas anderes als einen Syntaxfehler gibt.
Plalx

Erwägen Sie wirklich die Verwendung einer Bibliothek wie Moment.js. Es wird im gewünschten Ergebnis formatiert :)
Ankur

5
Warum eine Bibliothek verwenden, wenn 5 Codezeilen die Arbeit erledigen können? @ Ankur
Black Mamba


Verwandte: Was sind gültige Datums- und Uhrzeitzeichenfolgen in JavaScript? Beachten Sie, dass "Sun May 11,2014" keine gültige Datumszeichenfolge ist und das Parsen in einigen Browsern möglicherweise fehlschlägt.
Str

Antworten:


524

Du kannst tun:

function formatDate(date) {
    var d = new Date(date),
        month = '' + (d.getMonth() + 1),
        day = '' + d.getDate(),
        year = d.getFullYear();

    if (month.length < 2) 
        month = '0' + month;
    if (day.length < 2) 
        day = '0' + day;

    return [year, month, day].join('-');
}

Anwendungsbeispiel:

alert(formatDate('Sun May 11,2014'));

Ausgabe:

2014-05-11

Demo auf JSFiddle: http://jsfiddle.net/abdulrauf6182012/2Frm3/


11
Wirklich mehrere Variablendeklarationen in derselben Anweisung? stackoverflow.com/questions/694102/…
bhspencer

8
@ Fuser97381 Mehrere Variablendeklarationen in derselben Anweisung sind mehr als nur eine ästhetische Stilvorliebe. Es ist eine gefährliche Praxis. Wenn Sie versehentlich versagen, fügen Sie nach jeder Deklaration ein Komma hinzu, und Sie erstellen globale Variablen. Nicht etwas, das ermutigt werden sollte, was die kanonische Antwort auf eine Frage werden könnte.
Bhspencer

6
'use strict';@ Bhspencer
Vix

3
Das Neuformatieren einer Datumszeichenfolge sollte nicht vom erfolgreichen Parsen von nicht standardmäßigen Zeichenfolgen durch den integrierten Parser abhängen. In Anbetracht des OP-Formats kann es in weniger Code neu formatiert werden, ohne dass ein Datum verwendet wird.
RobG

Wie kann ich weitere 30 Tage im Bereich von 1 bis 31 erhöhen?
Steve Angello

456

Nutzen Sie einfach die integrierte toISOStringMethode, mit der Ihr Datum in das ISO 8601-Format gebracht wird:

yourDate.toISOString().split('T')[0]

Wo yourDate Ihr Datumsobjekt ist.

Bearbeiten: Ein Typ hat dies geschrieben, um die Zeitzone in den Kommentaren zu behandeln:

const offset = yourDate.getTimezoneOffset()
yourDate = new Date(yourDate.getTime() + (offset*60*1000))
return yourDate.toISOString().split('T')[0]

238
Seien Sie vorsichtig mit dieser Methode, wenn sie zuerst in das Datum in UTC konvertiert wird. Wenn Sie sich in einer + Zeitzone befinden und Ihr Zeitanteil früh am Tag liegt, kann er einen Tag zurücksetzen. Wenn Sie sich in einer Zeitzone befinden und Ihr Zeitanteil spät am Tag liegt, kann er alternativ einen Tag vorwärts rollen.
Luke Baulch

4
Versuchen Sie dies stattdessen:new Date(yourDateStr).toISOString().split('T')[0]
Exbuddha

24
const offset = yourDate.getTimezoneOffset(); yourDate = new Date(yourDate.getTime() + (offset*60*1000)); yourDate.toISOString().split('T')[0] Dies sollte das Problem der Zeitzone lösen
mjwrazor

5
now.toISOString().substring(0,10); Dies ist eine sauberere Alternative, da es Sie daran erinnert, dass YYYY-MM-DDdie ersten zehn Zeichen des vollständigen
ISO-

4
Hinweis: Mit der hilfreichen Lösung von @mjwrazor musste ich subtrahieren, anstatt den Offset zu addieren, um das richtige Datum zu erhalten (ändern Sie das + (offsetin a - (offset)
Rokoko

135

Ich benutze diesen Weg, um das Datum im Format JJJJ-MM-TT zu erhalten :)

var todayDate = new Date().toISOString().slice(0,10);

14
Wie gehen Sie mit der Datumsumschaltung um einen Tag um, wie hier von @Luke_Baulch erwähnt?
Malvineous

7
Sie können dies tun: var todayDate = new Date (); todayDate.setMinutes (todayDate.getMinutes () - todayDate.getTimezoneOffset ()); todayDate.toISOString (). Slice (0,10); Dies sollte helfen, das UTC-Problem zu vermeiden.
Fernando Aguilar

1
@FernandoAguilar Ein Zweifel, woher wissen wir, dass wir den Offset subtrahieren oder addieren müssen?
warumAto8

var todayDate = new Date(2018, 3 - 1, 26); todayDate.toISOString().slice(0, 10);gibt mir "2018-03-25". Auf einem anderen System var todayDate = new Date(2018, 3 - 1, 26, 17, 0, 0); todayDate.toISOString().slice(0, 10);gibt mir "2018-03-27".
Salman A

2
Funktioniert nicht immer. Aufgrund der UTC-Konvertierung wird manchmal ein Tag abgezogen.
NickG

110

Der einfachste Weg, um Ihr Datum in das Format JJJJ-MM-TT zu konvertieren, ist folgender:

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

Wie es funktioniert:

  • new Date("Sun May 11,2014")konvertiert die Zeichenfolge "Sun May 11,2014"in ein Datumsobjekt, das die Zeit Sun May 11 2014 00:00:00in einer Zeitzone basierend auf dem aktuellen Gebietsschema darstellt (Host-Systemeinstellungen)
  • new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))konvertiert Ihr Datum in ein Datumsobjekt, das der Zeit Sun May 11 2014 00:00:00in UTC (Standardzeit) entspricht, indem der Zeitzonenversatz subtrahiert wird
  • .toISOString() konvertiert das Datumsobjekt in eine ISO 8601-Zeichenfolge 2014-05-11T00:00:00.000Z
  • .split("T") teilt die Zeichenfolge in ein Array auf ["2014-05-11", "00:00:00.000Z"]
  • [0] nimmt das erste Element dieses Arrays

Demo

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

console.log(dateString);


20
Niemand sonst ist entsetzt, dass dies der einfachste Weg ist?
Lücke

.toISOString () funktioniert jedoch bei Sommerzeit nicht richtig.
Joes Ideen

2
@ JoeDevmon: Ich sehe nicht, wie relevant das hier ist. Das - (date.getTimezoneOffset() * 60000 )Bit sollte alle Zeitzonenunterschiede beseitigen, einschließlich der Auswirkungen der Sommerzeit.
John Slegers

2
@ JohnSlegers das habe ich mir gedacht, aber dann habe ich in einigen Fällen noch den Tag zuvor bekommen. Ich habe überarbeitet und Ihr Beispiel funktioniert jetzt. Ich muss eine seltsame Datumszeichenfolge gehabt haben oder so. Vielen Dank, dass Sie dabei bleiben und darauf hinweisen. +1 👍
Joes Ideen

2
Ich habe in SO und anderen Websites nach Hoch und Niedrig gesucht, um den besten Weg zu finden, um Zeitzonenprobleme mit Datumsangaben in JS zu lösen. Zweifellos ist dies bei weitem der einfachste und beste. Vielen Dank!
HartleySan

34
format = function date2str(x, y) {
    var z = {
        M: x.getMonth() + 1,
        d: x.getDate(),
        h: x.getHours(),
        m: x.getMinutes(),
        s: x.getSeconds()
    };
    y = y.replace(/(M+|d+|h+|m+|s+)/g, function(v) {
        return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-2)
    });

    return y.replace(/(y+)/g, function(v) {
        return x.getFullYear().toString().slice(-v.length)
    });
}

Ergebnis:

format(new Date('Sun May 11,2014'), 'yyyy-MM-dd')
"2014-05-11

1
Ich mag die zusätzliche Flexibilität, die diese Lösung gegenüber den anderen Antworten auf diese Frage bietet. Ich habe dies nicht gründlich getestet, aber für das gewünschte Format (dh "JJJJ-MM-TT HH: MM: SS") funktioniert es genau wie erwartet.
Porcus

3
Sie könnten eaaaaaaaasily vermeiden eval.
Salman A

3
Hier ist eine Version, die die Bewertung
m1m1k

2
Ich habe von dieser Antwort profitiert. Ich habe diese Zeile durch die eval Aussage zureturn ((v.length > 1 ? "0" : "") + z[v.slice(-1)]).slice(-2);
JesusIsMyDriver.dll

26

Eine Kombination einiger Antworten:

var d = new Date(date);
date = [
  d.getFullYear(),
  ('0' + (d.getMonth() + 1)).slice(-2),
  ('0' + d.getDate()).slice(-2)
].join('-');

Ich mag die Lösung am besten - einfach zu lesen und verlasse mich nicht auf toISOString()die potenziellen Zeitzonen-Fallstricke bei der Verwendung dieser Funktion.
matt.fc

Dies ist der erste, der mein Gehirn nicht verletzt.
Ckapilla

22

Wenn Sie nichts gegen die Verwendung von Bibliotheken haben, können Sie einfach die Moments.js- Bibliothek wie folgt verwenden:

var now = new Date();
var dateString = moment(now).format('YYYY-MM-DD');

var dateStringWithTime = moment(now).format('YYYY-MM-DD HH:mm:ss');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>


Coole Lösung, aber es ist ein 300-KB-Paket
Adam

13

Verwenden Sie einfach dies:

var date = new Date('1970-01-01'); // Or your date here
console.log((date.getMonth() + 1) + '/' + date.getDate() + '/' +  date.getFullYear());

Einfach und süß;)


4
Für das 2-Buchstaben-Format ist keine Polsterung vorhanden. Es wird eine einstellige Zahl angezeigt, wenn Datum oder Monat kleiner als 10 sind. Daher kann dies nicht direkt verwendet werden.
Yatender Singh

Ja, aber das kann einfach mit Javascript erreicht werden. Es entspricht Ihrer Anforderung, denke ich, nicht wahr? @ YatenderSingh
Pardeep Jain

4
Ja, richtig, aber überprüfen Sie den Titel der Frage "JJJJ-MM-TT" Format, das er will :)
Yatender Singh

var old_date = new Date (Datum); var new_date = old_date.getFullYear () + '-' + (old_date.getMonth () + 1) + '-' + old_date.getDate ()
Sitti Munirah Abdul Razak

1
Großartig. Es hat funktioniert und war einfach und prägnant!
Waleed93

12

toISOString()Es wird davon ausgegangen, dass Ihr Datum Ortszeit ist, und es wird in UTC konvertiert. Sie erhalten eine falsche Datumszeichenfolge.

Die folgende Methode sollte das zurückgeben, was Sie benötigen.

Date.prototype.yyyymmdd = function() {         

    var yyyy = this.getFullYear().toString();                                    
    var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based         
    var dd  = this.getDate().toString();             

    return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]);
};

Quelle: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/


9

Rufen Sie Jahr, Monat und Tag ab und fügen Sie sie dann zusammen. Gerade, einfach und genau.

function formatDate(date) {
    var year = date.getFullYear().toString();
    var month = (date.getMonth() + 101).toString().substring(1);
    var day = (date.getDate() + 100).toString().substring(1);
    return year + "-" + month + "-" + day;
}

//Usage example:
alert(formatDate(new Date()));


8

Sie können toLocaleDateString('fr-CA')auf DateObjekt verwenden

console.log(new Date('Sun May 11,2014').toLocaleDateString('fr-CA'));

Außerdem habe ich herausgefunden, dass diese Gebietsschemas das richtige Ergebnis aus dieser Gebietsschemaliste liefern. Liste aller Gebietsschemas und ihrer Funktionscodes?

'en-CA'
'fr-CA'
'lt-LT'
'sv-FI'
'sv-SE'


Irgendeine Idee, warum das funktioniert? Ist das ISO-Format nur die Standardeinstellung, oder verwenden diese Gebietsschemas dieses Format wirklich? Wenn es das erstere ist, würde ich befürchten, dass es sich in Zukunft unerwartet ändern könnte.
Jymbob

Dies funktioniert nicht mit NodeJS außerhalb des Browsers.
Donato

@jymbob Ich denke, diese Gebietsschemas verwenden diese Formate wirklich. Ich bin zu derselben Antwort gekommen, indem ich mir diese Wikipedia-Seite angesehen habe: en.wikipedia.org/wiki/Date_format_by_country
Ciprian Tomoiagă

5

Um auch die Zeitzone zu berücksichtigen, sollte dieser Einzeiler ohne Bibliothek gut sein:

new Date().toLocaleString("en-IN", {timeZone: "Asia/Kolkata"}).split(',')[0]

5

Sie können dies versuchen: https://www.npmjs.com/package/timesolver

npm i timesolver

Verwenden Sie es in Ihrem Code:

const timeSolver = require('timeSolver');
const date = new Date();
const dateString = timeSolver.getString(date, "YYYY-MM-DD");

Mit dieser Methode können Sie die Datumszeichenfolge abrufen:

getString

4

Keine dieser Antworten hat mich ganz zufrieden gestellt. Ich wollte eine plattformübergreifende Lösung, die mir den Tag in der lokalen Zeitzone ohne Verwendung externer Bibliotheken ermöglicht.

Das habe ich mir ausgedacht:

function localDay(time) {
  var minutesOffset = time.getTimezoneOffset()
  var millisecondsOffset = minutesOffset*60*1000
  var local = new Date(time - millisecondsOffset)
  return local.toISOString().substr(0, 10)
}

Das sollte den Tag des Datums im Format JJJJ-MM-TT in der Zeitzone zurückgeben, auf die sich das Datum bezieht.

So wird zum Beispiel localDay(new Date("2017-08-24T03:29:22.099Z"))zurückkehren"2017-08-23" , obwohl es bereits der 24. bei UTC ist.

Sie müssen POLYfill Date.prototype.toISOString für sie arbeiten in Internet Explorer 8, aber es sollte überall unterstützt werden.


Vielleicht ist es erwähnenswert, dass es Ihnen nur 2017-08-23 gibt, wenn Sie ausreichend hinter UTC stehen (z. B. in den USA).
Simon D

3

Ich schlage vor, so etwas wie formatDate-js zu verwenden, anstatt jedes Mal zu versuchen, es zu replizieren. Verwenden Sie einfach eine Bibliothek, die alle wichtigen Strftime-Aktionen unterstützt.

new Date().format("%Y-%m-%d")

3
new Date().toLocaleDateString('pt-br').split( '/' ).reverse( ).join( '-' );

oder

new Date().toISOString().split('T')[0]
new Date('23/03/2020'.split('/').reverse().join('-')).toISOString()
new Date('23/03/2020'.split('/').reverse().join('-')).toISOString().split('T')[0]

Versuche dies!


Die zweite Option zeigt möglicherweise das falsche Datum an, da die Daten in der UTC-Zeitzone angezeigt werden.
Ever Dev

2

Hier ist eine Möglichkeit, dies zu tun:

var date = Date.parse('Sun May 11,2014');

function format(date) {
  date = new Date(date);

  var day = ('0' + date.getDate()).slice(-2);
  var month = ('0' + (date.getMonth() + 1)).slice(-2);
  var year = date.getFullYear();

  return year + '-' + month + '-' + day;
}

console.log(format(date));

2

Date.js ist dafür großartig.

require("datejs")
(new Date()).toString("yyyy-MM-dd")

1

function myYmd(D){
    var pad = function(num) {
        var s = '0' + num;
        return s.substr(s.length - 2);
    }
    var Result = D.getFullYear() + '-' + pad((D.getMonth() + 1)) + '-' + pad(D.getDate());
    return Result;
}

var datemilli = new Date('Sun May 11,2014');
document.write(myYmd(datemilli));


1

var d = new Date("Sun May 1,2014");

var year  = d.getFullYear();
var month = d.getMonth() + 1;
var day   = d.getDate(); 

month = checkZero(month);             
day   = checkZero(day);

var date = "";

date += year;
date += "-";
date += month;
date += "-";
date += day;

document.querySelector("#display").innerHTML = date;
    
function checkZero(i) 
{
    if (i < 10) 
    {
        i = "0" + i
    };  // add zero in front of numbers < 10

    return i;
}
<div id="display"></div>


1
new Date(new Date(YOUR_DATE.toISOString()).getTime() - 
                 (YOUR_DATE.getTimezoneOffset() * 60 * 1000)).toISOString().substr(0, 10)

1

Einige der vorherigen Antworten waren in Ordnung, aber nicht sehr flexibel. Ich wollte etwas, das wirklich mehr Randfälle bewältigen kann, also nahm ich die Antwort von @orangleliu und erweiterte sie. https://jsfiddle.net/8904cmLd/1/

function DateToString(inDate, formatString) {
    // Written by m1m1k 2018-04-05

    // Validate that we're working with a date
    if(!isValidDate(inDate))
    {
        inDate = new Date(inDate);
    }

    // See the jsFiddle for extra code to be able to use DateToString('Sun May 11,2014', 'USA');
    //formatString = CountryCodeToDateFormat(formatString);

    var dateObject = {
        M: inDate.getMonth() + 1,
        d: inDate.getDate(),
        D: inDate.getDate(),
        h: inDate.getHours(),
        m: inDate.getMinutes(),
        s: inDate.getSeconds(),
        y: inDate.getFullYear(),
        Y: inDate.getFullYear()
    };

    // Build Regex Dynamically based on the list above.
    // It should end up with something like this: "/([Yy]+|M+|[Dd]+|h+|m+|s+)/g"
    var dateMatchRegex = joinObj(dateObject, "+|") + "+";
    var regEx = new RegExp(dateMatchRegex,"g");
    formatString = formatString.replace(regEx, function(formatToken) {
        var datePartValue = dateObject[formatToken.slice(-1)];
        var tokenLength = formatToken.length;

        // A conflict exists between specifying 'd' for no zero pad -> expand
        // to '10' and specifying yy for just two year digits '01' instead
        // of '2001'.  One expands, the other contracts.
        //
        // So Constrict Years but Expand All Else
        if (formatToken.indexOf('y') < 0 && formatToken.indexOf('Y') < 0)
        {
            // Expand single digit format token 'd' to
            // multi digit value '10' when needed
            var tokenLength = Math.max(formatToken.length, datePartValue.toString().length);
        }
        var zeroPad = (datePartValue.toString().length < formatToken.length ? "0".repeat(tokenLength) : "");
        return (zeroPad + datePartValue).slice(-tokenLength);
    });

    return formatString;
}

Anwendungsbeispiel:

DateToString('Sun May 11,2014', 'MM/DD/yy');
DateToString('Sun May 11,2014', 'yyyy.MM.dd');
DateToString(new Date('Sun Dec 11,2014'),'yy-M-d');

Schöne saubere und kommentierte Lösung. Ich bin jedoch skeptisch gegenüber dem ersten Argument, das stillschweigend durch ein neues Datum ersetzt wird, wenn es nicht als gültiges Datum anerkannt wird. Ich würde lieber setzen diesen „Optionnal Standardwert“ als zweites Argument statt, und eine Art von Ausnahme zurückgeben , falls (könnte ein einfache „Ungültige Datumsformat“ zurückgegeben String) das Format nicht erkannt wird, so dass Fehler erscheinen deutlich zu der Tester / Benutzer
Balmipour

1

Dies hat bei mir funktioniert, um das aktuelle Datum im gewünschten Format zu erhalten (JJJJMMTT HH: MM: SS):

var d = new Date();

var date1 = d.getFullYear() + '' +
            ((d.getMonth()+1) < 10 ? "0" + (d.getMonth() + 1) : (d.getMonth() + 1)) +
            '' +
            (d.getDate() < 10 ? "0" + d.getDate() : d.getDate());

var time1 = (d.getHours() < 10 ? "0" + d.getHours() : d.getHours()) +
            ':' +
            (d.getMinutes() < 10 ? "0" + d.getMinutes() : d.getMinutes()) +
            ':' +
            (d.getSeconds() < 10 ? "0" + d.getSeconds() : d.getSeconds());

print(date1+' '+time1);

1

Es wird keine Bibliothek benötigt

Nur reines JavaScript.

Das folgende Beispiel zeigt die letzten zwei Monate ab heute:

var d = new Date()
d.setMonth(d.getMonth() - 2);
var dateString = new Date(d);
console.log('Before Format', dateString, 'After format', dateString.toISOString().slice(0,10))


Gefährlich. In diesem Fall ignorieren Sie den Zeitzonenversatz.
Maxence51

1

PHP-kompatibles Datumsformat

Hier ist eine kleine Funktion, die dieselben Parameter wie die PHP-Funktion verwenden date()und eine Datums- / Zeitzeichenfolge in JavaScript zurückgeben kann.

Beachten Sie, dass nicht alle Datums () -Formatoptionen von PHP unterstützt werden. Sie können das partsObjekt erweitern, um das fehlende Format-Token zu erstellen

/**
 * Date formatter with PHP "date()"-compatible format syntax.
 */
const formatDate = (format, date) => {
  if (!format) { format = 'Y-m-d' }
  if (!date) { date = new Date() }

  const parts = {
    Y: date.getFullYear().toString(),
    y: ('00' + (date.getYear() - 100)).toString().slice(-2),
    m: ('0' + (date.getMonth() + 1)).toString().slice(-2),
    n: (date.getMonth() + 1).toString(),
    d: ('0' + date.getDate()).toString().slice(-2),
    j: date.getDate().toString(),
    H: ('0' + date.getHours()).toString().slice(-2),
    G: date.getHours().toString(),
    i: ('0' + date.getMinutes()).toString().slice(-2),
    s: ('0' + date.getSeconds()).toString().slice(-2)
  }

  const modifiers = Object.keys(parts).join('')
  const reDate = new RegExp('(?<!\\\\)[' + modifiers + ']', 'g')
  const reEscape = new RegExp('\\\\([' + modifiers + '])', 'g')

  return format
    .replace(reDate, $0 => parts[$0])
    .replace(reEscape, ($0, $1) => $1)
}

// ----- EXAMPLES -----
console.log( formatDate() ); // "2019-05-21"
console.log( formatDate('H:i:s') ); // "16:21:32"
console.log( formatDate('Y-m-d, o\\n H:i:s') ); // "2019-05-21, on 16:21:32"
console.log( formatDate('Y-m-d', new Date(2000000000000)) ); // "2033-05-18"

Kern

Hier ist eine Übersicht mit einer aktualisierten Version der formatDate()Funktion und zusätzlichen Beispielen: https://gist.github.com/stracker-phil/c7b68ea0b1d5bbb97af0a6a3dc66e0d9


0

Noch eine Kombination der Antworten. Gut lesbar, aber etwas langwierig.

function getCurrentDayTimestamp() {
  const d = new Date();

  return new Date(
    Date.UTC(
      d.getFullYear(),
      d.getMonth(),
      d.getDate(),
      d.getHours(),
      d.getMinutes(),
      d.getSeconds()
    )
  // `toIsoString` returns something like "2017-08-22T08:32:32.847Z"
  // and we want the first part ("2017-08-22")
  ).toISOString().slice(0, 10);
}

0

Wenn das Datum in allen Zeitzonen gleich sein muss, z. B. einen Wert aus der Datenbank darstellt, müssen Sie UTC-Versionen der Funktionen Tag, Monat und Jahr für das JavaScript-Datumsobjekt verwenden, da diese in UTC-Zeit und angezeigt werden Vermeiden Sie Fehler nacheinander in bestimmten Zeitzonen.

Verwenden Sie für diese Art der Formatierung noch besser die Datumsbibliothek Moment.js .


0

Ich habe die Antwort von Samit Satpute wie folgt geändert :

var newstartDate = new Date();
// newstartDate.setDate(newstartDate.getDate() - 1);
var startDate = newstartDate.toISOString().replace(/[-T:\.Z]/g, ""); //.slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format
console.log(startDate);


0

Formatieren und Finden des maximalen und minimalen Datums aus Hashmap-Daten:

var obj = {"a":'2001-15-01', "b": '2001-12-02' , "c": '2001-1-03'};

function findMaxMinDate(obj){
  let formatEncode = (id)=> { let s = id.split('-'); return `${s[0]+'-'+s[2]+'-'+s[1]}`}
  let formatDecode = (id)=> { let s = id.split('/'); return `${s[2]+'-'+s[0]+'-'+s[1]}`}
  let arr = Object.keys( obj ).map(( key )=> { return new Date(formatEncode(obj[key])); });
  let min = new Date(Math.min.apply(null, arr)).toLocaleDateString();
  let max = new Date(Math.max.apply(null, arr)).toLocaleDateString();
  return {maxd: `${formatDecode(max)}`, mind:`${formatDecode(min)}`}
}

console.log(findMaxMinDate(obj));


Wie hängt das mit der Frage zusammen (Formatieren eines Datums)?
Peter Mortensen

0

Das Neuformatieren einer Datumszeichenfolge ist ziemlich einfach, z

var s = 'Sun May 11,2014';

function reformatDate(s) {
  function z(n){return ('0' + n).slice(-2)}
  var months = [,'jan','feb','mar','apr','may','jun',
                 'jul','aug','sep','oct','nov','dec'];
  var b = s.split(/\W+/);
  return b[3] + '-' +
    z(months.indexOf(b[1].substr(0,3).toLowerCase())) + '-' +
    z(b[2]);
}

console.log(reformatDate(s));

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.