Obwohl JS verschiedene Attributmethoden zum Erhalten von Zeitdatumobjekten bietet, wie z. B.: GetDate -Methode | Getday -Methode | Getreiche Methode | Die Gethours -Methode ... usw. bietet keine Methode wie Java für Benutzer, um das angegebene Zeitobjekt gemäß der von selbst bereitgestellten Vorlage (Muster) zu formatieren. Daher habe ich eine kleine Methode für alle eingekapselt, um sich über -.- lustig zu machen. Wenn Sie gute Vorschläge haben, möchte ich sie großzügig empfehlen.
Verwenden Sie Wissenspunkte:
Argumente: Dieses Objekt repräsentiert die Ausführung der Funktion und die Parameter der Funktion, die sie aufruft. Es kann nicht explizit erstellt werden. Obwohl es ein Längenattribut hat und Werte in der "[]" -Syntax wie ein Array aufnehmen kann, ist es kein Array. Typeof -Objekt: Operator, gibt eine Zeichenfolge zurück, die den Datentyp des Ausdrucks darstellt. Sechs Möglichkeiten: "Nummer", "String", "Boolean", "Objekt", "Funktion" und "undefiniert". Object.Constructor: Repräsentiert die Funktion, die ein Objekt erstellt. Das Objekt muss der Name des Objekts oder der Funktion sein. Die zugrunde liegenden Daten haben dieses Attribut nicht. EXEC -Methode: Führen Sie die Suche in einem String mit dem regulären Ausdrucksmuster aus und geben Sie ein Array zurück, das die Suchergebnisse enthält. Es wurde kein Match gefunden, dann kehrt es null zurück. Der gleiche Typ übereinstimmte Elemente im Array wird nicht wiederholt angezeigt. Str.split (rex | str): Teilen Sie eine Zeichenfolge als reguläres Objekt oder Substring in ein Substring auf und geben Sie das Ergebnis dann als String -Array zurück. Wurf -Fehler ('MSG'): Wirt einen Fehler mit Nachrichteninformationen aus. Wurf kann von jedem Ausdruck folgen. Es gibt auch einige Verwendungen von für..in, dreidimensionale Operatoren und Substr, die relativ einfach sind.
Code -Snippet:
Die Codekopie lautet wie folgt:
/**
**** js Zeit- und Datumsformatierung *** <br>
* <p>
* Die Vorlagenzeichenfolge nimmt ein strenges Format an. Wenn es das Format überschreitet, wird eine Ausnahme geworfen und jedes Format kann nur einmal erscheinen. Zum Beispiel wird das yjyy-mm-yjyy-Format Ausnahmen werfen
* </p>
* Y-Jahreslänge: 2/4 Bit <br>
* Q-Quarterly Länge: 1 Ziffer <br>
* M-Monatslänge: 1 ~ 2 Ziffern <br>
* D-DAI Länge: 1 ~ 2 Ziffern <br>
* H-Zeit Länge: 1 ~ 2 Position 24-Stunden-System, H: 12-Stunden-System <br>
* M-Length: 1 ~ 2 Ziffern <br>
* S-Sekundenlänge: 1 ~ 2 Bit <br>
* S-MS Länge: 1 Bit behoben
* @param {Datum Typ -Objekt} Datum
* @param {String Typ Template String} fmt
* @Return formatierte Zeit- und Datumszeichenfolge
* @Author Lyt
*/
Funktion Date format (Datum, fmt) {
if (Argumente.Length! = 2) // Überprüfen Sie die Anzahl der Parameter
Wurffehler ('Argumente Länge ist illegal');
if (! Datum || (Typof Datum! = 'Objekt') || (D.Constructor!
Wurffehler (Argumente [0] + ': Der Typ ist kein Datumstyp');
if (/h+/.test(fmt) && /h+/.test(fmt)))
Wurffehler ("Das Format der Stunde ist falsch, der gleiche Typ kann nur einmal in einer Reihe erscheinen!");
/* Vorlagenparameterüberprüfung, reguläre Überprüfungsmethode*/
var verify = function (rex) {
var arr = new regexp (rex) .exec (fmt); // Erhalten Sie das passende Ergebnisarray
if (! arr) // zurückgeben, wenn Match fehlgeschlagen ist
zurückkehren "";
if (fmt.split (rex) .Length> 2) // Das Intervall desselben Typs tritt mehrmals auf
Wurffehler ("FMT -Formatfehler: Der gleiche Typ kann nur einmal in einer Zeile erscheinen!");
return arr [0];
};
/**
* Geben Sie für Monate, Tage, Stunden, Minuten und Sekunden einen universellen passenden Ersatz an
* @param {Objekt o Attributschlüssel} r
* @param {r entspricht dem regulären Objekt} rex
**//
var Common = Funktion (r, rex) {
if (len! = 1 && len! = 2)
Wurffehler ("Monatsformatfehler: M kann nur 1/2 Mal erscheinen");
Len == 2? fmt = fmt.replace (rex, o [r] .Length == 1? "0"+o [r]: o [r]): fmt = fmt.replace (rex, o [r]);
}
var o = {// Datenspeicherobjekt
"y +": Date.getingfullyear () + "", // Jahr
"Q +": math.floor ((Date.getMonth () + 3) / 3), // vierteljährlich
"M +": Date.getMonth () + 1 + "", // Monat
"D +": Date.getDate () + "", // Tag
"H +": Datum.Gethours () + "", // 24:00
"H +": Datum.Gethours () + "", // 12 Uhr
"M +": Date.getminutes () + "", // Punkte
"S +": Date.getSeconds () + "", // Sekunden
"S+": Date.getMilliseconds () // Millisekunden
}
für (var r in o) {
var rex, len, temp;
rex = new regexp (r);
temp = verify (rex); // Die resultierende Zeichenfolge übereinstimmen
len = temp.length; // Länge
if (! len || len == 0)
weitermachen;
if (r == "y+") {
if (len! = 2 && len! = 4)
Wurffehler ("Jahr -Formatfehler: Y kann nur 2/4 Mal erscheinen");
Len == 2? fmt = fmt.replace (rex, o [r] .substr (2,3)): fmt = fmt.replace (rex, o [r]);
} else if (r == "q+") {
if (len! = 1)
Wurffehler ("Quarterly -Format -Fehler: Q kann nur einmal erscheinen");
fmt = fmt.replace (rex, o [r]);
} else if (r == "h+") {
if (len! = 1 && len! = 2)
Wurffehler ("Stundenformatfehler: H kann nur 1/2 Mal auftreten");
var h = (o [r]> 12? O [r] -12: o [r]) + "";
Len == 2? fmt = fmt.replace (rex, H.Length == 1? "0"+H: H): fmt = fmt.Replace (rex, h);
} else if (r == "s+") {
if (len! = 1)
Wurffehler ("Millisekunden -Formatfehler: S kann nur einmal erscheinen");
fmt = fmt.replace (rex, o [r]);
} else {// (r == "m+" || r == "d+" || r == "H+" || r == "m+" || r == "S+")
gemeinsam (r, rex)
}
}
FMT zurückgeben;
}
Die obigen Demonstrationseffekte dienen Ihrer Referenz:
Die Codekopie lautet wie folgt: console.log (DateFormat (neuer Datum (), 'yyyyys QQ M Monat DD DAY HH HOST MINDE S SECIT S S MILLISEKOND');
Die Codekopie lautet wie folgt: console.log (DateFormat (neuer Datum (), 'yyyyyyyyyyyyqqmmdddddhhhmm Minute s zweiter S Millisekunden'));
The code copy is as follows: console.log(DateFormat(new Date(),'yyyyy', q quarter, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q, q,
Die Codekopie lautet wie folgt: console.log (DateFormat ("Ich bin kein Zeitobjekt", 'Yyyyy Year Q Quartal M Month Dd Day HH HOST M MINIDE S MILLISECOND');
Die Codekopie lautet wie folgt: console.log (DateFormat (neuer Datum (), 'yyyyys QQ MMM -Monat DDD DAY HH HOST M MINIDE S MILLISECOND'));
Ich werde die anderen Effekte nacheinander nicht auflisten. Wenn Sie interessiert sind, können Sie den Code kopieren und direkt testen. Bitte erinnern Sie ihm eine großzügige Erinnerung, wenn Fehler oder Bereiche optimiert werden müssen.
Das obige ist eine Einführung in diese sehr nützliche Kapselungsfunktion. Ist es nicht sehr praktisch? Freunde können es direkt in ihren Projekten verwenden.