Heim > Web-Frontend > js-Tutorial > js Zeit- und Datumsformatierung Kapselungsfunktion_Javascript-Kenntnisse

js Zeit- und Datumsformatierung Kapselungsfunktion_Javascript-Kenntnisse

WBOY
Freigeben: 2016-05-16 16:29:37
Original
1555 Leute haben es durchsucht

Obwohl js verschiedene Attributmethoden zum Abrufen von Zeit-Datumsobjekten bereitstellt, wie zum Beispiel: getDate-Methode | getFullYear-Methode | Methode ... ... usw., aber es bietet keine Methode wie Java, mit der Benutzer das angegebene Zeitobjekt gemäß der von ihnen selbst bereitgestellten Vorlage (Muster) formatieren können, daher habe ich eine kleine Methode gekapselt Damit jeder darüber lachen kann -.- Wenn Sie gute Vorschläge haben, geben Sie diese bitte großzügig weiter. Verwendete Wissenspunkte:

Argumente: Dieses Objekt repräsentiert die Parameter der ausgeführten Funktion und der Funktion, die sie aufruft. Es kann nicht explizit erstellt werden, obwohl es über ein Längenattribut verfügt und wie ein Array mit der Syntax „[]“ abgerufen werden kann. Typ des Objekts: Operator, gibt eine Zeichenfolge zurück, die den Datentyp des Ausdrucks darstellt. Sechs Möglichkeiten: „Zahl“, „Zeichenfolge“, „Boolean“, „Objekt“, „Funktion“ und „undefiniert“. object.constructor: Stellt eine Funktion dar, die ein Objekt erstellt.

Objekt muss

der Name eines Objekts oder einer Funktion sein. Die zugrunde liegenden Daten verfügen nicht über dieses Attribut. exec-Methode: Führt eine Suche in einer Zeichenfolge mithilfe eines regulären Ausdrucksmusters durch und gibt ein Array zurück, das die Ergebnisse der Suche enthält. Wenn keine Übereinstimmung gefunden wird, wird null zurückgegeben. Übereinstimmende Elemente desselben Typs werden im Array nicht wiederholt angezeigt. str.split(Rex|str): Teilen Sie eine Zeichenfolge mithilfe eines regulären Objekts oder einer Teilzeichenfolge in Teilzeichenfolgen auf und geben Sie das Ergebnis dann als Zeichenfolgenarray zurück. throw Error('msg'): Einen Fehler mit Nachrichteninformationen auslösen. Auf throw kann ein beliebiger Ausdruck folgen. Es gibt auch einige Verwendungen von for..in, ternärem Operator, substr, auf die ich nicht näher eingehen werde, sie sind relativ einfach.

Codeausschnitt:

Code kopieren Der Code lautet wie folgt:

/**
* ***JS-Zeit- und Datumsformatierung***

*


* Die Vorlagenzeichenfolge nimmt ein striktes Format an. Wenn das Format überschritten wird, wird eine Ausnahme ausgelöst. Jeder Formattyp kann nur einmal vorkommen, z. B. das Format „JJJJ-MM-JJJJ“. *


* Y-Jahr-Länge: 2/4 Ziffern

* q-Viertel-Länge: 1 Ziffer

* M-Monatslänge: 1–2 Ziffern

* d-日 Länge: 1~2 Ziffern

* H-Stunden-Länge: 1–2 Ziffern im 24-Stunden-Format, h: 12-Stunden-Format

* m-Minuten-Länge: 1–2 Ziffern

* S-Sekunden-Länge: 1–2 Ziffern

* S-Millisekundenlänge: fest 1 Ziffer
* @param {Datumstypobjekt} Datum
* @param {String type template string} fmt
* @return formatierte Zeit- und Datumszeichenfolge
* @author lyt
​*/
Funktion DateFormat(date, fmt){
If (arguments.length != 2) // Überprüfung der Parameternummer
          throw Error('arguments length is illegal');
If (!date || (typeof date != 'object') || (d.constructor != Date)) // Überprüfung der Parametergültigkeit
          throw Error(arguments[0] ':The type is not a Date type');
If (/H /.test(fmt) && /h /.test(fmt))
throw Error("Das Stundenformat ist falsch, derselbe Typ kann nur einmal hintereinander erscheinen!");
/* Überprüfung der Vorlagenparameter, reguläre Überprüfungsmethode */
var verify = function(Rex){
           var arr = new RegExp(Rex).exec(fmt); // Holen Sie sich das passende Ergebnisarray
           if (!arr) // Gibt
zurück, wenn die Übereinstimmung fehlschlägt              return "";
If (fmt.split(Rex).length > 2) // Derselbe Typ kommt mehrmals vor
               throw Error("fmt-Formatfehler: Derselbe Typ kann nur einmal in einer Zeile erscheinen!");
          return arr[0];
};
/**
* Bieten Sie universell passenden Ersatz für Monat, Tag, Stunde, Minute und Sekunde
* @param {Objekt o Attributschlüssel} r
* @param {r entspricht dem regulären Objekt} rex
**/
var common = function(r, rex) {
If(len !=1 && len !=2)
throw Error("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.getFullYear() „“, // Jahr
"q ": Math.floor((date.getMonth() 3) / 3), // Quarter
„M“: date.getMonth() 1 „“, // Monat
„d“: date.getDate() „“, // Tag
"H ": date.getHours() "", // 24 Stunden
"h ": date.getHours() "", // 12 Uhr
"m ": date.getMinutes() "", // Minuten
"s ": date.getSeconds() "", // Sekunden
"S ": date.getMilliseconds() // Millisekunden
}
for(var r in o) {
var rex, len, temp;
         rex = new RegExp(r);
           temp = verify(rex); // Entspricht der resultierenden Zeichenfolge
        len = temp.length; // length
If(!len || len == 0)
                 weiter;
           if(r == "y ") {
If(len !=2 && len != 4)
throw Error("Jahresformatfehler: 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)
throw Error("Viertelformatfehler: q kann nur einmal erscheinen");
                                            fmt=fmt.replace(rex, o[r]);
           } else if(r == "h ") {
If(len !=1 && len !=2)
throw Error("Stundenformatfehler: h kann nur 1/2 Mal erscheinen");
          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)
throw Error("Millisekunden-Formatfehler: S kann nur einmal erscheinen");
                                            fmt=fmt.replace(rex, o[r]);
                               // (r=="M " || r=="d " || r=="H " || r=="m " || r=="s ")
common(r, rex)
                                                                                                       }
Geben Sie fmt;
zurück }

Hier sind einige Demonstrationseffekte als Referenz:

Code kopieren Der Code lautet wie folgt:
console.log(DateFormat(new Date(),' yyyyyear q Quarter M Monat tt Tag HH Stunde m Minute s Sekunde S Millisekunde'));

Code kopieren Der Code lautet wie folgt:
console.log(DateFormat(new Date(),' yyyyyearyy Q Quarter M Monat tt Tag HH Stunde m Minute s Sekunde S Millisekunde'));

Code kopieren Der Code lautet wie folgt:
console.log(DateFormat(new Date(),' yyyyyear q Quarter M Monat tt Tag Hh Stunde m Minute s Sekunde S Millisekunde'));

Code kopieren Der Code lautet wie folgt:
console.log(DateFormat("Ich bin keine Zeit Objekt",'yyyy Jahr q Quartal M Monat tt Tag Hh Stunde m Minute s Sekunde S Millisekunde'));

Code kopieren Der Code lautet wie folgt:
console.log(DateFormat(new Date(),' jjjjJahr q Quartal MMM Monat dd Tag HH Stunde m Minute s Sekunde S Millisekunde'));

Ich werde die anderen Effekte nicht einzeln auflisten. Wenn Sie interessiert sind, können Sie den Code einfach kopieren und direkt testen. Wenn es Fehler oder Bereiche gibt, die optimiert werden müssen, können Sie diese gerne beheben.

Das Obige ist eine Einführung in diese sehr nützliche gekapselte Funktion. Ist es nicht sehr praktisch, dass Freunde sie direkt in ihren eigenen Projekten verwenden können?

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage