Date.prototype.toLocaleDateString()

O método toLocaleDateString() retorna uma string com a representação de parte da data baseando-se no idioma. Os novos argumentos locales e options deixam as aplicações especificarem o idioma cujas convenções de formatação devem ser usadas e permitem customizar o comportamento da função. Em implementações antigas, nas quais ignoram os argumentos locales e options,  o locale usado e a forma da string retornada são inteiramente dependente da implementação nativa.

Sintáxe

dateObj.toLocaleDateString([locales [, options]])

Parametros

Verifique a seção Compatibilidade entre navegadores para ver quais navegadores dão suporte aos argumentos locales e options, e o Example:  Verificação para suporte dos argumentos locales e options para detectar a funcionalidade.

{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}
O valor padrão para cada propriedade do componente date-time é undefined, mas se as propriedades weekday, year, month, day são todas undefined, então year, month and day são assumidos como "numeric".

Return value

Uma representação em string de parte da data dada a instância Date de acordo com as convenções específicas do idioma. 

Exemplos

Usando toLocaleDateString()

Em uso básico sem especificação de locale, uma string formatada no padrão do locale e com as opções padrões é retornada.

var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));

// toLocaleDateString() sem argumentos depende da implementação,
// o locale padrão, e o time zone padrão
console.log(date.toLocaleDateString());
// → "12/11/2012" se rondando em locale en-US com time zone de America/Los_Angeles

Checagem para o suporte dos argumentos locales e options

Os argumentos locales e options não são suportados em todos os browser ainda.  Para verificar se uma uma implementação já suporta eles, você pode usar o requisito de que tags de idioma ilegal são rejeitadas com uma exceção RangeError:

function toLocaleDateStringSupportsLocales() {
  try {
    new Date().toLocaleDateString('i');
  } catch (e) {
    return e.name === 'RangeError';
  }
  return false;
}

Usando locales

Esse exemplo mostra algumas das variações em formatos de data localizados. A fim de obter oformato do idioma usado na interface de usuário da usa aplicação, certifique-se de especificar esse idioma (e possivelmente algumas outros idiomas de reserva) usando o argumento locales

var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// os formatos abaixo assumem o time zone local do locale;
// America/Los_Angeles for the US

// Inglês americano usa a ordem mês-dia-ano
console.log(date.toLocaleDateString('en-US'));
// → "12/19/2012"

// Inglês Britânico usa a ordem dia-mês-ano
console.log(date.toLocaleDateString('en-GB'));
// → "20/12/2012"

// Coreano usa a ordem ano-mês-dia
console.log(date.toLocaleDateString('ko-KR'));
// → "2012. 12. 20."

// Árabe na maioria dos países de língua árabe usa dígitos árabes reais
console.log(date.toLocaleDateString('ar-EG'));
// → "٢٠‏/١٢‏/٢٠١٢"

// para Japonês, aplicações podem querer usar o calendário japonês,
// onde 2012 foi o ano 24 da era Heisei
console.log(date.toLocaleDateString('ja-JP-u-ca-japanese'));
// → "24/12/20"

// quando um idioma que pode não ser suportado é requerido, tal como
// Balinês, inclua um idioma de reserva, nesse caso Indonésio
console.log(date.toLocaleDateString(['ban', 'id']));
// → "20/12/2012"

Usando options

O resultados gerados por toLocaleDateString() podem ser customizado usando o argumento options:

var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

// requer um dia da semana jutamente com uma data longa
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
console.log(date.toLocaleDateString('de-DE', options));
// → "Donnerstag, 20. Dezember 2012"

// uma aplicação pode querer usar UTC e fazê-lo visível
options.timeZone = 'UTC';
options.timeZoneName = 'short';
console.log(date.toLocaleDateString('en-US', options));
// → "Thursday, December 20, 2012, GMT"

Performance

Ao formatar um grande número de datas, é melhor criar um objeto Intl.DateTimeFormat e usar a função fornecido porsua propriedade format.

Especificações

Specification Status Comment
ECMAScript 3rd Edition (ECMA-262) Padrão Definição inicial. Implementada no JavaScript 1.0.
ECMAScript 5.1 (ECMA-262)
The definition of 'Date.prototype.toLocaleDateString' in that specification.
Padrão
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Date.prototype.toLocaleDateString' in that specification.
Padrão
ECMAScript (ECMA-262)
The definition of 'Date.prototype.toLocaleDateString' in that specification.
Padrão em tempo real
ECMAScript Internationalization API 1.0 (ECMA-402)
The definition of 'Date.prototype.toLocaleDateString' in that specification.
Padrão Define os argumentos locales e options.
ECMAScript Internationalization API 2.0 (ECMA-402)
The definition of 'Date.prototype.toLocaleDateString' in that specification.
Padrão
ECMAScript Internationalization API (ECMA-402)
The definition of 'Date.prototype.toLocaleDateString' in that specification.
Padrão em tempo real

Compatibilidade com o navegador

Estamos convertendo nossos dados de compatibilidade para o formato JSON. Esta tabela de compatibilidade ainda usa o formato antigo, pois ainda não convertemos os dados que ela contém. Descubra como você pode ajudar!
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) (Yes) (Yes) (Yes)
locales and options arguments 24 [1] 29 (29) 11 15 10
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
locales and options arguments Não suportado 26 Não suportado Não suportado Não suportado 10

[1] Chrome 24 also added support for passing timeZones other than UTC.

Veja também