Aunque JS proporciona varios métodos de atributo diferentes para obtener objetos de fecha de tiempo, como: Método GetDate | Método GetDay | Método Getfulfyear | Método Gethours ... etc., no proporciona un método como Java para que los usuarios formaten el objeto de tiempo especificado de acuerdo con la plantilla (patrón) proporcionada por ellos mismos, por lo que encapsulé un pequeño método para que todos se burlen de -.-. Si tiene buenas sugerencias, me gustaría recomendarlo generosamente.
Use puntos de conocimiento:
Argumentos: este objeto representa la función que se está ejecutando y los parámetros de la función que la llama. No se puede crear explícitamente. Aunque tiene un atributo de longitud y puede tomar valores en la sintaxis "[]" como una matriz, no es una matriz. TypeOf Object: Operator, devuelve una cadena que representa el tipo de datos de la expresión. Seis posibilidades: "número", "cadena", "booleano", "objeto", "función" y "indefinido". Object.Constructor: representa la función que crea un objeto. El objeto debe ser el nombre del objeto o función. Los datos subyacentes no tienen este atributo. Método EXEC: Ejecute la búsqueda en una cadena usando un patrón de expresión regular y devuelve una matriz que contiene los resultados de búsqueda. No se encontró ninguna coincidencia, luego devuelve nulo. El mismo tipo de elementos coincidentes en la matriz no aparecerá repetidamente. str.split (rex | str): divida una cadena en una subcadena como objeto o subcadena regular, y luego devuelve el resultado como una matriz de cadenas. Error de lanzamiento ('msg'): lanza un error con la información del mensaje. El lanzamiento puede ser seguido por cualquier expresión. También hay algunos usos de para ... en operadores tridimensionales y substr, que son relativamente simples.
Fragmento de código:
La copia del código es la siguiente:
/**
**** JS Formato de hora y fecha *** <br>
* <p>
* La cadena de plantilla adopta un formato riguroso. Si excede el formato, se lanzará una excepción, y cada formato solo puede aparecer una vez. Por ejemplo, el formato Yyyy-Mm-Yyyy lanzará excepciones
* </p>
* Y-año de duración: 2/4 bits <br>
* Q-Quarterly Longitud: 1 dígito <br>
* M-Month Longitud: 1 ~ 2 dígitos <br>
* Longitud D-Dai: 1 ~ 2 dígitos <br>
* H-Time Longitud: 1 ~ 2 Posición Sistema de 24 horas, H: sistema de 12 horas <br>
* M-longitud: 1 ~ 2 dígitos <br>
* Longitud S-Segundo: 1 ~ 2 bits <br>
* Longitud de S-MS: fijo 1 bit
* @param {objeto de tipo de fecha} fecha
* @param {cadena de plantilla de tipo de cadena} fmt
* @return hora y cadena de fecha formateada
* @author lyt
*/
función dateFormat (fecha, fmt) {
if (argumentos.length! = 2) // verifique el número de parámetros
Error de tirar ('la longitud de los argumentos es ilegal');
if (! date || (typeOf date! = 'object') || (d.Constructor! = date)) // Parámetro Legalidad Verificación
Error de lanzamiento (argumentos [0] + ': el tipo no es el tipo de fecha');
if (/h+/.test(fmt) && /h+/.test(fmt)))
Error de tirar ("El formato de la hora es incorrecto, el mismo tipo solo puede aparecer una vez en fila!");
/* Verificación de parámetros de plantilla, método de verificación regular*/
var verify = function (rex) {
var arr = new Regexp (rex) .exec (fmt); // Obtener la matriz de resultados coincidentes
if (! arr) // regresa si el partido falló
devolver "";
if (fmt.split (rex) .length> 2) // El intervalo del mismo tipo ocurre varias veces
Error de lanzamiento ("Error de formato FMT: ¡el mismo tipo solo puede aparecer una vez en fila!");
devolver arr [0];
};
/**
* Proporcionar reemplazo de coincidencia universal durante meses, días, horas, minutos y segundos
* @param {objeto o tecla de atributo} r
* @param {r corresponde al objeto regular} rex
**/
var común = function (r, rex) {
if (len! = 1 && len! = 2)
Error de lanzamiento ("Error de formato de mes: M solo puede aparecer 1/2 veces");
len == 2? fmt = fmt.replace (rex, o [r] .length == 1? "0"+o [r]: o [r]): fmt = fmt.replace (rex, o [r]);
}
var o = {// Objeto de almacenamiento de datos
"y +": date.getblyear () + "", // año
"Q +": Math.floor ((date.getMonth () + 3) / 3), // trimestralmente
"M +": date.getMonth () + 1 + "", // mes
"d +": date.getDate () + "", // día
"H +": date.gethours () + "", // 24:00
"H +": date.gethours () + "", // 12 en punto
"M +": date.getminutes () + "", // puntos
"S +": date.getSeconds () + "", // segundos
"S+": date.getMilliseConds () // MilliseConds
}
para (var r in o) {
var rex, len, temp;
rex = nuevo regexp (r);
temp = verificar (rex); // coincide con la cadena resultante
len = temp.length; // Longitud
if (! len || len == 0)
continuar;
if (r == "y+") {
if (len! = 2 && len! = 4)
Error de tirar ("Error de formato de año: Y solo puede aparecer 2/4 veces");
len == 2? fmt = fmt.replace (rex, o [r] .substr (2,3)): fmt = fmt.replace (rex, o [r]);
} else if (r == "Q+") {
if (¡len! = 1)
Error de lanzamiento ("Error de formato trimestral: Q solo puede aparecer una vez");
fmt = fmt.replace (rex, o [r]);
} else if (r == "H+") {
if (len! = 1 && len! = 2)
Error de tirar ("Error de formato de hora: H solo puede ocurrir 1/2 veces");
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)
Error de tirar ("Error de formato de milisegundos: S solo puede aparecer una vez");
fmt = fmt.replace (rex, o [r]);
} else {// (r == "m+" || r == "d+" || r == "h+" || r == "m+" || r == "s+")
Común (R, Rex)
}
}
devolver fmt;
}
Los efectos de demostración anteriores son para su referencia:
La copia del código es la siguiente: console.log (dateFormat (nueva fecha (), 'Yyyy's QQ M mes DD Day Hh Hour M Minute S Second S MilliseCond'));
La copia del código es la siguiente: console.log (dateFormat (nueva fecha (), 'aaaayyyyyyyyyyqqmmdddddhhhmm minutos s segundo s milisegundo'));
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, 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, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q, Q,
La copia del código es la siguiente: console.log (dateFormat ("No soy un objeto de tiempo", 'yyyyy año q trimestre m mes dd dd hh hora m minuto s segundo s milisegundo'));
La copia del código es la siguiente: console.log (dateFormat (nueva fecha (), 'yyyy's Qq mmm mes ddd ddd hh hora m minuto s segundo s milisegundo'));
No enumeraré los otros efectos uno por uno. Si está interesado, puede copiar el código y probarlo directamente. Déle un recordatorio generoso si hay algún error o áreas que necesiten ser optimizadas.
Lo anterior es una introducción a esta función de encapsulación muy útil. ¿No es muy práctico? Los amigos pueden usarlo directamente en sus proyectos.