webentwicklung-frage-antwort-db.com.de

javascript-Datum in Zeichenfolge

Hier ist was ich tun muss. 

Holen Sie sich das Datum, konvertieren Sie es in einen String und übergeben Sie es an ein Dienstprogramm eines Drittanbieters. Die Antwort der Bibliothek hat ein Datum im String-Format, wenn ich sie übergeben habe. So muss ich das Datum in eine Zeichenfolge wie 20110506105524 konvertieren (JJJJJMMDDHHMMSS)

function printDate() {
    var temp = new Date();
    var dateStr = temp.getFullYear().toString() + 
                  temp.getMonth().toString() + 
                  temp.getDate().toString() +
                  temp.getHours().toString() + 
                  temp.getMinutes().toString() + 
                  temp.getSeconds().toString();

    debug (dateStr );
}

Das Problem bei obigem ist, dass es für die Monate 1 bis 9 eine Ziffer druckt. Wie kann ich es ändern, um genau 2 Ziffern für Monat, Datum zu drucken ...

50
Kiran

Sie müssen mit "0" auffüllen, wenn es sich um eine einzelne Ziffer handelt. getMonth gibt 0..11 und nicht 1..12 zurück

function printDate() {
    var temp = new Date();
    var dateStr = padStr(temp.getFullYear()) +
                  padStr(1 + temp.getMonth()) +
                  padStr(temp.getDate()) +
                  padStr(temp.getHours()) +
                  padStr(temp.getMinutes()) +
                  padStr(temp.getSeconds());
    debug (dateStr );
}

function padStr(i) {
    return (i < 10) ? "0" + i : "" + i;
}
57
Alex K.

Auf JQuery Datepicker vertrauen, aber es könnte leicht gemacht werden

var mydate = new Date();
$.datepicker.formatDate('yy-mm-dd', mydate);
38
Stéphane

verwenden Sie diese Polyfill https://github.com/UziTech/js-date-format

var d = new Date("1/1/2014 10:00 am");
d.format("DDDD 'the' DS 'of' MMMM YYYY h:mm TT");
//output: Wednesday the 1st of January 2014 10:00 AM
4
Tony Brix

Mit regex und toJSON() etwas einfacher.

var now = new Date();
var timeRegex = /^.*T(\d{2}):(\d{2}):(\d{2}).*$/
var dateRegex = /^(\d{4})-(\d{2})-(\d{2})T.*$/
var dateData = dateRegex.exec(now.toJSON());
var timeData = timeRegex.exec(now.toJSON());
var myFormat = dateData[1]+dateData[2]+dateData[3]+timeData[1]+timeData[2]+timeData[3]

Was zum Zeitpunkt des Schreibens Ihnen "20151111180924" gibt.

Das Gute an toJSON() ist, dass alles bereits gepolstert ist.

1
Daniel Cerecedo

Möglicherweise ist es einfacher, das Datum in die tatsächliche Ganzzahl 20110506105524 zu konvertieren und diese dann in eine Zeichenfolge zu konvertieren:

function printDate() {
    var temp = new Date();
    var dateInt =
        ((((temp.getFullYear() * 100 + 
            temp.getMonth() + 1) * 100 + 
           temp.getDate()) * 100 +
          temp.getHours()) * 100 + 
         temp.getMinutes()) * 100 + 
        temp.getSeconds();

    debug ( '' + dateInt );  // convert to String
}

Bei temp.getFullYear() < 1000 ist das Ergebnis um eine (oder mehrere) Ziffern kürzer.

Achtung: Dies funktioniert nicht mit Millisekundengenauigkeit (d. H. 17 Stellen), da Number.MAX_SAFE_INTEGER 9007199254740991 ist und nur 16 Stellen hat.

1
jammon

Ich mag die Antwort von Daniel Cerecedo mit toJSON() und Regex. Eine noch einfachere Form wäre:

var now = new Date();
var regex = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}).*$/;
var token_array = regex.exec(now.toJSON());
// [ "2017-10-31T02:24:45.868Z", "2017", "10", "31", "02", "24", "45" ]
var myFormat = token_array.slice(1).join('');
// "20171031022445"
0
jammon