Embora o JS forneça vários métodos de atributo diferentes para obter objetos de data de tempo, como: Método GetDate | Método GetDay | Método Getlyear | Método Gethours ... etc., ele não fornece um método como Java para os usuários formatarem o objeto de tempo especificado de acordo com o modelo (padrão) fornecido por eles, então encapsulei um pequeno método para que todos tivessem sarro -.-. Se você tiver boas sugestões, gostaria de recomendar generosamente.
Use pontos de conhecimento:
Argumentos: esse objeto representa a função que está sendo executada e os parâmetros da função que a chama. Não pode ser criado explicitamente. Embora tenha um atributo de comprimento e possa assumir valores na sintaxe "[] [] como uma matriz, não é uma matriz. TIPOOF Objeto: Operador, retorna uma string que representa o tipo de dados da expressão. Seis possibilidades: "número", "string", "boolean", "objeto", "função" e "indefinido". Object.Constructor: representa a função que cria um objeto. O objeto deve ser o nome do objeto ou função. Os dados subjacentes não possuem esse atributo. Método EXEC: Execute a pesquisa em uma string usando o padrão de expressão regular e retorne uma matriz contendo os resultados da pesquisa. Nenhuma correspondência foi encontrada, então ele retorna nulo. O mesmo tipo de elementos correspondentes na matriz não aparecerá repetidamente. str.split (rex | str): divida uma string em uma substring como um objeto ou substring regular e retorne o resultado como uma matriz de string. Erro de arremesso ('msg'): lança um erro com informações da mensagem. O arremesso pode ser seguido por qualquer expressão. Existem também alguns usos de para ... em operadores tridimensionais e substrato, que são relativamente simples.
Trenó de código:
A cópia do código é a seguinte:
/**
*** Formatação de tempo e data JS *** <br>
* <p>
* A sequência de modelos adota um formato rigoroso. Se exceder o formato, uma exceção será lançada e cada formato só poderá aparecer uma vez. Por exemplo, o formato sim-mm-yyyy lançará exceções
* </p>
* ANO DE ANO: 2/4 bits <br>
* Q-Quarterly Comprimento: 1 dígito <br>
* M-mês de comprimento: 1 ~ 2 dígitos <br>
* D-Dai Comprimento: 1 ~ 2 dígitos <br>
* H-tempo de tempo: 1 ~ 2 Posição do sistema 24 horas, H: sistema de 12 horas <br>
* M-Length: 1 ~ 2 dígitos <br>
* Comprimento do segundo segundo: 1 ~ 2 bits <br>
* Comprimento do S-MS: fixado 1 bit
* @param {date tipo objeto} data
* @param {string tipo modelo string} fmt
* @return Hora e string de data formatada
* @Author Lyt
*/
função dateformat (data, fmt) {
if (argumentos.Length! = 2) // Verifique o número de parâmetros
erro de arremesso ('o comprimento dos argumentos é ilegal');
if (! Data || (tipo de data! = 'objeto') || (D.Constructor! = Data)) // Verificação da legalidade do parâmetro
Erro de arremesso (argumentos [0] + ': o tipo não é tipo de data');
if (/h+/.test(fmt) && /h+/.test(fmt))
Erro de arremesso ("O formato da hora está errado, o mesmo tipo só pode aparecer uma vez uma vez!");
/* Verificação de parâmetros de modelo, método de verificação regular*/
var verify = function (rex) {
var arr = novo regexp (rex) .exec (fmt); // Obtenha a matriz de resultados correspondentes
se (! arr) // retornar se a partida falhar
retornar "";
if (fmt.split (rex) .Length> 2) // O intervalo do mesmo tipo ocorre várias vezes
Erro de arremesso ("Erro de formato FMT: O mesmo tipo só pode aparecer uma vez uma vez!");
retornar arr [0];
};
/**
* Forneça substituição universal de correspondência por meses, dias, horas, minutos e segundos
* @param {objeto o atributo} r
* @param {r corresponde ao objeto regular} rex
**/
var comum = função (r, rex) {
if (len! = 1 && len! = 2)
Erro de arremesso ("Erro de formato do mês: M só pode aparecer 1/2 vezes");
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 armazenamento de dados
"y +": date.getlyear () + "", // ano
"q +": math.floor ((date.getmonth () + 3) / 3), // trimestralmente
"M +": date.getMonth () + 1 + "", // mês
"d +": date.getdate () + "", // dia
"H +": date.gethours () + "", // 24:00
"h +": date.gethours () + "", // 12 horas
"M +": date.getminutes () + "", // pontos
"S +": date.getSeconds () + "", // segundos
"S+": date.getMillisEconds () // milissegundos
}
para (var r r em o) {
var rex, len, temp;
rex = novo regexp (r);
temp = verifique (rex); // corresponde à string resultante
len = temp.length; // Comprimento
if (! len || len == 0)
continuar;
if (r == "y+") {
if (len! = 2 && len! = 4)
Erro de arremesso ("Erro de formato do ano: y pode aparecer apenas 2/4 vezes");
Len == 2? fmt = fmt.replace (rex, o [r] .substr (2,3)): fmt = fmt.replace (rex, o [r]);
} else if (r == "q+") {
if (len! = 1)
Erro de lançamento ("Erro de formato trimestral: Q só pode aparecer uma vez");
fmt = fmt.replace (rex, o [r]);
} else if (r == "h+") {
if (len! = 1 && len! = 2)
Erro de arremesso ("Erro de formato de hora: H só pode ocorrer 1/2 vezes");
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)
Erro de arremesso ("Erro de formato de milissegundos: S só pode aparecer uma vez");
fmt = fmt.replace (rex, o [r]);
} else {// (r == "m+" || r == "d+" || r == "h+" || r == "m+" || r == "s+")
Comum (R, Rex)
}
}
retornar FMT;
}
Os efeitos de demonstração acima são para sua referência:
A cópia do código é a seguinte: console.log (DateFormat (new Date (), 'AAAA QQ M MÊS DD DD HH HORA MIR MINK S Segundo S Millissegund');
The code copy is as follows: console.log(DateFormat(new Date(),'yyyyyYYYYYYYQQMMDDDDDHHHMM Minutes S Second S Millisecond'));
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,
A cópia do código é a seguinte: console.log (DateFormat ("Não sou um objeto de tempo", 'AAIA ANO Q Quarter m Month DD Dia HH Hora M Minuto S Segundo M milissegundos'));
A cópia do código é a seguinte: console.log (dateFormat (new Date (), '' yyyyy qq mmm mês ddd dia hh hora m minuto s segundo s milissegundo ');
Não vou listar os outros efeitos um por um. Se você estiver interessado, pode copiar o código e testá -lo diretamente. Por favor, dê um lembrete generoso se houver bugs ou áreas que precisam ser otimizadas.
O acima é uma introdução a essa função de encapsulamento muito útil. Não é muito prático? Os amigos podem usá -lo diretamente em seus projetos.