Bien que JS fournit différentes méthodes d'attribut différentes pour obtenir des objets de date de temps, tels que: Méthode GetDate | Méthode Getday | Méthode piéton | Méthode Gethours ... etc., elle ne fournit pas de méthode comme Java pour que les utilisateurs formater l'objet temporel spécifié en fonction du modèle (modèle) fourni par eux-mêmes, donc j'ai encapsulé une petite méthode pour que tout le monde se moque de -.-. Si vous avez de bonnes suggestions, je voudrais le recommander généreusement.
Utilisez des points de connaissance:
Arguments: Cet objet représente la fonction exécutée et les paramètres de la fonction qui l'appelle. Il ne peut pas être créé explicitement. Bien qu'il ait un attribut de longueur et puisse prendre des valeurs dans la syntaxe "[]" comme un tableau, ce n'est pas un tableau. TypeOf Object: Operator, renvoie une chaîne qui représente le type de données de l'expression. Six possibilités: "nombre," "string," booléen, "" objet, "fonction" et "Undefined". object.constructor: représente la fonction qui crée un objet. L'objet doit être le nom de l'objet ou de la fonction. Les données sous-jacentes n'ont pas cet attribut. Méthode EXEC: Exécutez la recherche dans une chaîne en utilisant un modèle d'expression régulière et renvoyez un tableau contenant les résultats de recherche. Aucun match n'a été trouvé, puis il revient nul. Le même type correspondant aux éléments dans le tableau n'apparaîtra pas à plusieurs reprises. str.split (rex | str): divisez une chaîne en une sous-chaîne en tant qu'objet ou sous-chaîne ordinaire, puis renvoyez le résultat en tant que tableau de chaîne. lancer une erreur ('msg'): lance une erreur avec les informations du message. Le lancer peut être suivi par n'importe quelle expression. Il y a aussi quelques usages de ... dans les opérateurs tridimensionnels, et substr, qui sont relativement simples.
Extrait de code:
La copie de code est la suivante:
/ **
* *** JS Formatage de l'heure et de la date *** <br>
* <p>
* La chaîne de modèle adopte un format rigoureux. S'il dépasse le format, une exception sera lancée et chaque format ne peut apparaître qu'une seule fois. Par exemple, le format Yyyy-mm-yyyy lancera des exceptions
* </p>
* durée de l'année en y: 2/4 bits <br>
* Q-Quarter Longueur: 1 chiffre <br>
* Longueur de M-mont: 1 ~ 2 chiffres <br>
* D-Dai Longueur: 1 ~ 2 chiffres <br>
* Longueur de temps H: 1 ~ 2 POSITION SYSTÈME 24 heures, H: système 12 heures <br>
* Longueur M: 1 ~ 2 chiffres <br>
* Longueur de la seconde: 1 ~ 2 bits <br>
* Longueur S-MS: fixe 1 bit
* @param {Date Type Object} Date
* @param {String Type Template String} fmt
* @return format l'heure et la chaîne de date
* @author lyt
* /
function dateformat (date, fmt) {
if (arguments.length! = 2) // Vérifiez le nombre de paramètres
Erreur de lancer («la longueur des arguments est illégale»);
if (! Date || (typeof Date! = 'Object') || (D.Constructor! = Date)) // Vérification de la légalité des paramètres
Erreur de lancer (arguments [0] + ': le type n'est pas le type de date');
if (/h+/.test(fmt) && /h+/.test(fmt))
Jetez une erreur ("Le format de l'heure est faux, le même type ne peut apparaître qu'une seule fois!");
/ * Vérification des paramètres du modèle, méthode de vérification régulière * /
var Verify = function (rex) {
var arr = new regexp (rex) .exec (fmt); // Obtenez le tableau de résultats correspondant
si (! arr) // REVOIR si le match a échoué
retour "";
if (fmt.split (rex) .length> 2) // L'intervalle du même type se produit plusieurs fois
Jetez une erreur ("Erreur de format FMT: le même type ne peut apparaître qu'une seule fois!");
return arr [0];
};
/ **
* Fournir un remplacement de correspondance universel pendant des mois, des jours, des heures, des minutes et des secondes
* @param {objet o clé d'attribut} r
* @param {r correspond à l'objet régulier} Rex
** /
var commun = fonction (r, rex) {
if (len! = 1 && len! = 2)
Erreur de lancer ("Erreur de format de mois: m ne peut apparaître que 1/2 fois");
len == 2? fmt = fmt.replace (rex, o [r] .length == 1? "0" + o [r]: o [r]): fmt = fmt.replace (rex, o [r]);
}
var o = {// objet de stockage de données
"y +": date.getlyar () + "", // année
"q +": math.floor ((date.getMonth () + 3) / 3), // Quarterly
"M +": date.getMonth () + 1 + "", // mois
"d +": date.getDate () + "", // jour
"H +": date.Gethours () + "", // 24:00
"H +": date.Gethours () + "", // 12 heures
"M +": date.getMinutes () + "", // points
"S +": date.getSeconds () + "", // secondes
"S +": date.getmilliseconds () // millisecondes
}
pour (var r dans o) {
Var Rex, Len, Temp;
rex = new regexp (r);
temp = Verify (rex); // correspond à la chaîne résultante
len = temp.length; // Longueur
if (! Len || len == 0)
continuer;
if (r == "y +") {
if (len! = 2 && len! = 4)
Erreur de lancer ("Erreur de format de l'année: y ne peut apparaître que 2/4 fois");
len == 2? fmt = fmt.replace (rex, o [r] .substr (2,3)): fmt = fmt.replace (rex, o [r]);
} else if (r == "q +") {
si (len! = 1)
Erreur de lancer ("Erreur de format trimestriel: Q ne peut apparaître qu'une seule fois");
fmt = fmt.replace (rex, o [r]);
} else if (r == "h +") {
if (len! = 1 && len! = 2)
Erreur de lancer ("Erreur de format heure: H ne peut se produire que 1/2 fois");
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 +") {
si (len! = 1)
Erreur de lancer ("Erreur de format de millisecondes: s ne peut apparaître qu'une seule fois");
fmt = fmt.replace (rex, o [r]);
} else {// (r == "m +" || r == "d +" || r == "h +" || r == "m +" || r == "s +")
Common (R, Rex)
}
}
retour fmt;
}
Les effets de démonstration ci-dessus sont pour votre référence:
La copie de code est la suivante: Console.log (DateFormat (new Date (), «Yyyy's QQ M Mois DD DD HH Hour M Minute S Deuxième S millisecond»)));
La copie de code est la suivante: Console.log (DateFormat (new Date (), «Yyyyyyyyyyyyqqmmdddddhhhmm minutes s seconde s millisecond»));
La copie de code est la suivante: 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, q, q, q,, Q,
La copie de code est la suivante: Console.log (DateFormat ("Je ne suis pas un objet temporel", 'Yyyyy Year Q Quarter M mois DD DD HH Hour M Minute S Second S Millisecond')));
La copie de code est la suivante: Console.log (DateFormat (new Date (), 'Yyyyy's QQ MMM MOND DDD Day HH Hour M Minute S Deuxième S millisecond')));
Je ne listerai pas les autres effets un par un. Si vous êtes intéressé, vous pouvez copier le code et le tester directement. Veuillez lui donner un généreux rappel s'il y a des insectes ou des zones qui doivent être optimisées.
Ce qui précède est une introduction à cette fonction d'encapsulation très utile. N'est-ce pas très pratique? Les amis peuvent l'utiliser directement dans leurs projets.