Actualmente intento mostrar la hora del usuario sin mostrar los segundos. ¿Hay alguna manera de hacer esto usando .toLocaleTimeString () de Javascript?
Haciendo algo como esto:
var date = new Date();
var string = date.toLocaleTimeString();
mostrará la hora del usuario con cada unidad, por ejemplo, actualmente muestra 3:39:15 PM. ¿Puedo mostrar esa misma cadena, solo sin los segundos? (por ejemplo, 3:39 PM)
javascript
time
javadog36
fuente
fuente
hour: "2-digit"
no funciona para mí en Chrome 42 ni FF 37 ---d = new Date(1429524912495).toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit', hour12: true})
regresa"6:15 AM"
en ambos.[]
para omitir un entorno local específico. De esa manera, usted permanece en la configuración regional de los usuarios:toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}
new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false}); "17:08"
Esto funciona para mi:
fuente
El valor devuelto por Date.prototype.toLocaleString depende de la implementación, por lo que obtienes lo que obtienes. Puede intentar analizar la cadena para eliminar segundos, pero puede ser diferente en diferentes navegadores, por lo que deberá tener en cuenta cada navegador en uso.
Crear su propio formato inequívoco no es difícil con los métodos de fecha. Por ejemplo:
fuente
Con locales:
fuente
También he estado buscando una solución a este problema, esto es lo que finalmente se me ocurrió:
Puedes probarlo aquí: http://jsfiddle.net/B5Zrx/
\ u200E es un carácter de formato que he visto en alguna versión de IE (es unicode marca de izquierda a derecha).
Supongo que si el tiempo formateado contiene algo como "XX: XX: XX", entonces debe ser tiempo con segundos y elimino la última parte, si no encuentro este patrón, nada cambia. Bastante seguro, pero existe el riesgo de dejar segundos en algunas circunstancias extrañas.
Solo espero que no haya una configuración regional que cambie el orden de las partes de tiempo formateadas (por ejemplo, haga que sea ss: mm: hh). Sin embargo, esta marca de izquierda a derecha me pone un poco nervioso por eso, es por eso que no elimino la marca de derecha a izquierda (\ u202E): prefiero no encontrar una coincidencia en este caso y dejar el tiempo formateado con segundos en tal caso.
fuente
toLocaleTimeString()
retornos pueden no ser ciertos para todos los entornos locales.Puedes probar esto, que funciona para mis necesidades.
o
fuente
:
.Aquí hay una función que lo hará, con comentarios que explican:
Como, como otros han señalado, toLocaleTimeString () se puede implementar de manera diferente en diferentes navegadores, de esta manera se obtiene un mejor control.
Para obtener más información sobre el objeto Fecha de Javascript, este es un buen recurso: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
fuente
Creo que la pregunta original se puede responder fácilmente con algo que se ha pasado por alto hasta ahora: una simple división de cadena. El tiempo que se devuelve es una cadena de texto, simplemente divídala en el delimitador ":" y vuelva a armar la cadena de la manera que desee. Sin complementos, sin secuencias de comandos complicadas. y aquí tienes:
fuente
Aunque esta es una pregunta anterior, tuve la misma hace poco, y se me ocurrió una solución más simple usando expresiones regulares y la función de reemplazo de cadena como otra alternativa (no es necesario tener bibliotecas js externas ni depender de la API de internalización ECMAScript) :
Este enfoque utiliza una expresión anticipada de expresiones regulares para agarrar el extremo: ss AM / PM de la cadena y reemplaza la parte: ss con un espacio, devolviendo el resto de la cadena intacta. (Literalmente dice "Encuentre dos puntos con dos dígitos y un espacio seguido de AM o PM y reemplace los dos puntos, dos dígitos y la porción de espacio con solo un espacio).
Esta expresión / enfoque solo funciona para entornos locales en EE. UU. Y en EE. UU. Si también desea un resultado similar con, digamos, inglés británico (en-GB), que no usa AM / PM, se necesita una expresión regular diferente.
Basado en el resultado de la muestra del interrogador original, supongo que estaban tratando principalmente con audiencias estadounidenses y el esquema de tiempo en EE. UU.
fuente
Simplemente convierta la fecha en una cadena, y luego concatene las subcadenas que desee.
fuente
toLocaleTimeString
devuelve diferentes cadenas en cada navegador según la configuración regional. No puede confiar en estas posiciones, obtendrá resultados diferentes, probablemente rotos, en los navegadores de otras personas.