Uma maneira útil e flexível para formatar o DateTimes em JavaScript é Intl.DateTimeFormat:
var date = new Date();
var options = { year: 'numeric', month: 'short', day: '2-digit'};
var _resultDate = new Intl.DateTimeFormat('en-GB', options).format(date);
// The _resultDate is: "12 Oct 2017"
// Replace all spaces with - and then log it.
console.log(_resultDate.replace(/ /g,'-'));
O resultado é: "12-Oct-2017"
Os formatos de data e hora podem ser personalizados usando o argumento de opções.
O Intl.DateTimeFormatobjeto é um construtor para objetos que habilitam a formatação de data e hora sensíveis ao idioma.
Sintaxe
new Intl.DateTimeFormat([locales[, options]])
Intl.DateTimeFormat.call(this[, locales[, options]])
Parâmetros
localidades
Opcional. Uma sequência com uma tag de idioma BCP 47 ou uma matriz dessas seqüências. Para a forma geral e interpretação do argumento de localidades, consulte a página Intl. As seguintes chaves de extensão Unicode são permitidas:
nu
Numbering system. Possible values include: "arab", "arabext", "bali", "beng", "deva", "fullwide", "gujr", "guru", "hanidec", "khmr", "knda", "laoo", "latn", "limb", "mlym", "mong", "mymr", "orya", "tamldec", "telu", "thai", "tibt".
ca
Calendar. Possible values include: "buddhist", "chinese", "coptic", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamicc", "iso8601", "japanese", "persian", "roc".
Opções
Opcional. Um objeto com algumas ou todas as seguintes propriedades:
localeMatcher
O algoritmo de correspondência de localidade a ser usado. Os valores possíveis são "lookup"e "best fit"; o padrão é "best fit". Para informações sobre esta opção, consulte a página Intl.
fuso horário
O fuso horário a ser usado. As únicas implementações de valor que você deve reconhecer é "UTC"; o padrão é o fuso horário padrão do tempo de execução. Implementações podem também reconhecer os nomes de zona de tempo do banco de dados de fuso horário IANA, tais como "Asia/Shanghai", "Asia/Kolkata","America/New_York" .
hour12
Se deve ser usado o tempo de 12 horas (em oposição ao tempo de 24 horas). Os valores possíveis são truee false; o padrão é dependente da localidade.
formatMatcher
O algoritmo de correspondência de formato a ser usado. Os valores possíveis são "basic"e "best fit"; o padrão é "best fit". Consulte os parágrafos a seguir para obter informações sobre o uso dessa propriedade.
As propriedades a seguir descrevem os componentes de data e hora a serem usados na saída formatada e suas representações desejadas. As implementações são necessárias para suportar pelo menos os seguintes subconjuntos:
weekday, year, month, day, hour, minute, second
weekday, year, month, day
year, month, day
year, month
month, day
hour, minute, second
hour, minute
As implementações podem oferecer suporte a outros subconjuntos e as solicitações serão negociadas em relação a todas as combinações disponíveis de representação de subconjunto para encontrar a melhor correspondência. Dois algoritmos estão disponíveis para essa negociação e selecionados pela propriedade formatMatcher: Um "basic"algoritmo totalmente especificado e um algoritmo de "melhor ajuste" dependente da implementação.
dia da semana
A representação do dia da semana. Os valores possíveis são "narrow", "short", "long".
era
A representação da época. Os valores possíveis são "narrow", "short", "long".
ano
A representação do ano. Os valores possíveis são "numeric", "2-digit".
mês
A representação do mês. Os valores possíveis são "numeric", "2-digit", "narrow", "short", "long".
dia
A representação do dia. Os valores possíveis são "numeric", "2-digit".
hora
A representação da hora. Os valores possíveis são "numeric", "2-digit".
minuto
A representação do minuto. Os valores possíveis são "numeric", "2-digit".
segundo
A representação do segundo. Os valores possíveis são "numeric", "2-digit".
timeZoneName
A representação do nome do fuso horário. Os valores possíveis são "short", "long". O valor padrão para cada propriedade do componente de data e hora é indefinido, mas se todas as propriedades do componente forem indefinidas, o ano, o mês e o dia serão assumidos "numeric".
Verifique on-line
Mais detalhes