Formatador De Data //Repositório JavaScript

Descrição

Formata uma data de acordo com uma string de formatação.
Criado: 2006.05.05

Código (Download)

//+ Carlos R. L. Rodrigues
//@ http://jsfromhell.com/geral/date-format [rev. #1]

Date.prototype.format = function(m, r){
    var d = this, a, fix = function(n, c){return (n = n + "").length < c ? new Array(++c - n.length).join("0") + n : n};
    var r = r || {}, f = {j: function(){return d.getDate()}, w: function(){return d.getDay()},
        y: function(){return (d.getFullYear() + "").slice(2)}, Y: function(){return d.getFullYear()},
        n: function(){return d.getMonth() + 1}, m: function(){return fix(f.n(), 2)},
        g: function(){return d.getHours() % 12 || 12}, G: function(){return d.getHours()},
        H: function(){return fix(d.getHours(), 2)}, h: function(){return fix(f.g(), 2)},
        d: function(){return fix(f.j(), 2)}, N: function(){return f.w() + 1},
        i: function(){return fix(d.getMinutes(), 2)}, s: function(){return fix(d.getSeconds(), 2)},
        ms: function(){return fix(d.getMilliseconds(), 3)}, a: function(){return d.getHours() > 11 ? "pm" : "am"},
        A: function(){return f.a().toUpperCase()}, O: function(){return d.getTimezoneOffset() / 60},
        z: function(){return (d - new Date(d.getFullYear() + "/1/1")) / 864e5 >> 0},
        L: function(){var y = f.Y(); return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0},
        t: function(){var n; return (n = d.getMonth() + 1) == 2 ? 28 + f.L() : n & 1 && n < 8 || !(n & 1) && n > 7 ? 31 : 30},
        W: function(){
            var a = f.z(), b = 364 + f.L() - a, nd = (new Date(d.getFullYear() + "/1/1").getDay() || 7) - 1;
            return (b <= 2 && ((d.getDay() || 7) - 1) <= 2 - b) ? 1 :
                (a <= 2 && nd >= 4 && a >= (6 - nd)) ? new Date(d.getFullYear() - 1 + "/12/31").format("%W%") :
                (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);
        }
    }
    return m.replace(/%(.*?)%/g, function(t, s){
        return r[s] ? r[s](d, function(s){return f[s] && f[s]();}) : f[s] ? f[s]() : "%" + (s && s + "%");
    });
}

Exemplo (Exemplo)

<script type="text/javascript">
//<![CDATA[

var month = ["Janeiro", "Fevereiro", "Mar?o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];
var days = ["Domingo", "Segunda-Feira", "Ter?a-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "S?bado"];
var functions = {
    DayName: function(d, f){
        return days[f('w')];
    },
    MonthName: function(d, f){
        return month[f('n') - 1];
    },
    userFunction: function(d, f){
        return "User function called [" + d + "]";
    }
}

var date = new Date();
var m = "Hoje ? %DayName%, dia %j% de %MonthName% de %Y%.\n%H%:%i%:%s% : %ms%ms\n%userFunction%\n\n";
document.write(
    m = m.replace(/\n/g, "<br />"), "<hr />", 
    date.format(m, functions)
);

//]]>
</script>

Ajuda

Date.prototype.format(format: String, [userFunctions: Object = null]): String
Formata uma data de acordo com uma string de formatação.
format
string de formatação, aceita caracteres especiais, os quais devem ser circundados por "%" (para usar o "%" literalmente, use "%%"), os seguintes caracteres são reconhecidos:
  • d - dia com 2 dígitos (01-31)
  • j - dia (1-31)
  • N - dia da semana 1 = segunda, 2 = terça, ... (1-7)
  • w - dia da semana 0 = domingo, 1 = segunda, ... (0-6)
  • z - dia do ano (1-365)
  • W - semana do ano (1-52)
  • m - mês com 2 dígitos (01-12)
  • n - mês (1-12)
  • t - dias no mês (28-31)
  • L - ano bissêxto (0 = não, 1 = sim)
  • Y - ano com 4 dígitos (Ex. 1979, 2006)
  • y - ano com 2 dígitos (Ex. 79, 06)
  • a - am ou pm
  • A - AM ou PM
  • g - hora (1-12)
  • G - hora (0-23)
  • h - hora (01-12)
  • H - hora com dois dígitos (00-23)
  • i - minuto com 2 dígitos (00-59)
  • s - segundo com 2 dígitos (00-59)
  • ms - milesegundos com 3 dígitos (000-999)
  • O - Timezone em horas
userFunctions
objeto onde as propriedades devem ser nomes de funções do usuário, o valor de cada propriedade deve ser uma função que recebe 2 parâmetros, o primeiro será o próprio objeto Date e o segundo é o segundo é uma função que recebe como parâmetro um dos caracteres especiais definidos acima e retorna seu valor.

Ranque (Votos: 22)

3.36