546 Stimmen

Get String in YYYYMMDD Format von JS Datum Objekt?

Ich versuche, JS zu verwenden, um eine date object in eine Zeichenkette in YYYYMMDD Format. Gibt es einen einfacheren Weg als die Verkettung von Date.getYear() , Date.getMonth() y Date.getDay() ?

1voto

Lonnie Best Punkte 8084

Einheimisches Javascript:

new Date().toLocaleString('zu-ZA').slice(0,10).replace(/-/g,'');

1voto

Natürlich können Sie für jede Variante der Darstellung von Datumszeichenfolgen eine eigene Funktion erstellen. Wenn Sie internationale Datumsformate berücksichtigen, haben Sie Dutzende von spezifischen Funktionen mit lächerlichen Namen, die schwer zu unterscheiden sind.

Es gibt keine sinnvolle Funktion, die alle Formate abdeckt, aber es gibt eine sinnvolle Funktionszusammensetzung, die dies tut:

const pipe2 = f => g => x =>
  g(f(x));

const pipe3 = f => g => h => x =>
  h(g(f(x)));

const invoke = (method, ...args) => o =>
  o[method] (...args);

const padl = (c, n) => s =>
  c.repeat(n)
    .concat(s)
    .slice(-n);

const inc = n => n + 1;

// generic format date function

const formatDate = stor => (...args) => date =>
  args.map(f => f(date))
    .join(stor);

// MAIN

const toYYYYMMDD = formatDate("") (
  invoke("getFullYear"),
  pipe3(invoke("getMonth")) (inc) (padl("0", 2)),
  pipe2(invoke("getDate")) (padl("0", 2)));

console.log(toYYYYMMDD(new Date()));

Ja, das ist eine Menge Code. Aber Sie können buchstäblich jede String-Datumsdarstellung ausdrücken, indem Sie einfach die Funktionsargumente ändern, die an die Funktion höherer Ordnung übergeben werden formatDate . Alles ist explizit und deklarativ, d.h. man kann fast lesen, was passiert.

0voto

Trung Punkte 1521

Sie können selbst eine Funktion wie folgt erstellen

function toString(o, regex) {
    try {
        if (!o) return '';
        if (typeof o.getMonth === 'function' && !!regex) {
            let splitChar = regex.indexOf('/') > -1 ? '/' : regex.indexOf('-') > -1 ? '-' : regex.indexOf('.') > -1 ? '.' : '';
            let dateSeparate = regex.split(splitChar);
            let result = '';
            for (let item of dateSeparate) {
                let val = '';
                switch (item) {
                    case 'd':
                        val = o.getDate();
                        break;
                    case 'dd':
                        val = this.date2Char(o.getDate());
                        break;
                    case 'M':
                        val = o.getMonth() + 1;
                        break;
                    case 'MM':
                        val = this.date2Char(o.getMonth() + 1);
                        break;
                    case 'yyyy':
                        val = o.getFullYear();
                        break;
                    case 'yy':
                        val = this.date2Char(o.getFullYear());
                        break;
                    default:
                        break;
                }
                result += val + splitChar;
            }
            return result.substring(0, result.length - 1);
        } else {
            return o.toString();
        }
    } catch(ex) { return ''; }
}

function concatDateToString(args) {
    if (!args.length) return '';
    let result = '';
    for (let i = 1; i < args.length; i++) {
        result += args[i] + args[0];
    }
    return result.substring(0, result.length - 1);
}

function date2Char(d){
    return this.rightString('0' + d);
}

function rightString(o) {
    return o.substr(o.length - 2);
}

Gebraucht:

var a = new Date();
console.log('dd/MM/yyyy: ' + toString(a, 'dd/MM/yyyy'));
console.log('MM/dd/yyyy: ' + toString(a, 'MM/dd/yyyy'));
console.log('dd/MM/yy: ' + toString(a, 'dd/MM/yy'));
console.log('MM/dd/yy: ' + toString(a, 'MM/dd/yy'));

0voto

Ismael Terreno Punkte 701

Hier ist eine kleine Verbesserung der Antwort von https://stackoverflow.com/users/318563/o-o

Date.prototype.ddmmyyyy = function(delimiter) {
    var yyyy = this.getFullYear().toString();
    var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
    var dd  = this.getDate().toString();
    return (dd[1]?dd:"0"+dd[0]) + delimiter + (mm[1]?mm:"0"+mm[0]) + delimiter +yyyy  ; // padding
};
Ich hoffe, dass ich für jeden hilfreich sein kann!

)

0voto

Devin Gray Punkte 1943
Try this:

function showdate(){

var a = new Date();
var b = a.getFullYear();
var c = a.getMonth();
(++c < 10)? c = "0" + c : c;
var d = a.getDate();
(d < 10)? d = "0" + d : d;
var final = b + "-" + c + "-" + d; 

return final;

} 

document.getElementById("todays_date").innerHTML = showdate();

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