Atualmente, estou tentando exibir a hora do usuário sem exibir os segundos. Existe uma maneira de fazer isso usando .toLocaleTimeString () do Javascript?
Fazendo algo parecido com isto:
var date = new Date();
var string = date.toLocaleTimeString();
exibirá a hora do usuário em todas as unidades, por exemplo, atualmente, exibe 15:39:15. Posso exibir a mesma string, apenas sem os segundos? (por exemplo, 15:39)
javascript
time
javadog36
fonte
fonte
hour: "2-digit"
não está trabalhando para mim no Chrome 42 nem FF 37 ---d = new Date(1429524912495).toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit', hour12: true})
retorna"6:15 AM"
em ambos.[]
para deixar de fora uma localidade específica. Dessa forma, você fica na localidade dos usuários:toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}
new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false}); "17:08"
Isso funciona para mim:
fonte
O valor retornado por Date.prototype.toLocaleString depende da implementação, para que você obtenha o que obtém. Você pode tentar analisar a sequência para remover segundos, mas pode ser diferente em navegadores diferentes, portanto, você deve conceder permissão para todos os navegadores em uso.
Criar seu próprio formato inequívoco não é difícil usando os métodos Date. Por exemplo:
fonte
Com localidades:
fonte
Eu também tenho procurado solução para este problema, eis o que eu acabei inventando:
Você pode experimentá-lo aqui: http://jsfiddle.net/B5Zrx/
\ u200E é um caractere de formatação que eu já vi em alguma versão do IE (marca unicode da esquerda para a direita).
Suponho que se o horário formatado contiver algo como "XX: XX: XX", deve ser o tempo com segundos e removo a última parte; se não encontrar esse padrão, nada será alterado. Bastante seguro, mas existe o risco de deixar segundos em algumas circunstâncias estranhas.
Eu só espero que não haja um código de idioma que mude a ordem das partes do tempo formatadas (por exemplo, torne ss: mm: hh). Essa marca da esquerda para a direita está me deixando um pouco nervoso com isso, é por isso que não removo a marca da direita para a esquerda (\ u202E) - prefiro não encontrar uma correspondência nesse caso e deixar o hora formatada com segundos nesse caso.
fonte
toLocaleTimeString()
retornos que podem não ser verdadeiros para todos os locais.Você pode tentar isso, que está funcionando para minhas necessidades.
ou
fonte
:
.Aqui está uma função que fará isso, com comentários que explicam:
Como, como outros observaram, o toLocaleTimeString () pode ser implementado de maneira diferente em diferentes navegadores, dessa forma, oferece melhor controle.
Para saber mais sobre o objeto Data Javascript, este é um bom recurso: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
fonte
Eu acho que a pergunta original pode ser facilmente respondida com algo que está sendo esquecido até agora: uma simples divisão de string. O tempo retornado é uma sequência de texto, basta dividi-la no delimitador ":" e remontar a sequência da maneira que desejar. Sem plug-ins, sem scripts complicados. e aqui vai você:
fonte
Embora essa seja uma pergunta mais antiga, eu tinha a mesma pergunta recentemente e criei uma solução mais simples usando expressões regulares e a função de substituição de cadeia de caracteres como outra alternativa (não há necessidade de bibliotecas js externas ou dependência da API de internalização do ECMAScript) :
Essa abordagem usa uma regex antecipada para capturar a extremidade: ss AM / PM da sequência e substitui a parte: ss por um espaço, retornando o restante da sequência intocado. (Literalmente, diz "Encontre dois pontos com dois dígitos e um espaço seguido de AM ou PM e substitua os dois pontos, dois dígitos e a parte do espaço por apenas um espaço).
Essa expressão / abordagem funciona apenas para localidades en-US e en-US-like. Se você também deseja um resultado semelhante com, por exemplo, inglês britânico (en-GB), que não usa AM / PM, é necessária uma expressão regular diferente.
Com base no exemplo de amostra do questionador original, suponho que eles estavam lidando principalmente com o público americano e o esquema de tempo nos EUA.
fonte
Simplesmente converta a data em uma sequência e concatene as substrings que deseja dela.
fonte
toLocaleTimeString
retorna uma string diferente em cada navegador, dependendo das configurações de localidade. Você não pode confiar nessas posições; obterá resultados diferentes, provavelmente quebrados, nos navegadores de outras pessoas.