Estoy tratando de construir un buen nombre de archivo. Intenté hacerlo en 1 línea en JS, pero aún no encontré nada. Así que hice estos
const date = new Date().toLocaleDateString().replaceAll('/', '-').replaceAll('_', '-').replaceAll(' ', '-'); const time = new Date().toLocaleTimeString().replaceAll('/', '-').replaceAll('_', '-').replaceAll(' ', '-'); let dateTime = date + '-' + time; console.log(dateTime);Obtuve
6-24-2022-3_38_18-PM
¿Por qué los guiones bajos 2x _ siguen ahí?
estoy tratando de conseguir
6-24-2022-3-33-17-PM
¿Conocen una mejor manera de lograr eso?
const date = new Date().toLocaleDateString().replaceAll('/', '-').replaceAll('_', '-').replaceAll(' ', '-') const time = new Date().toLocaleTimeString().replaceAll('/', '-').replaceAll('_', '-').replaceAll(' ', '-') console.log(date + '-' + time) Veo casi su resultado deseado: 6-24-2022-3:48:11-PM (ya que no cambió : (dos puntos) a tiempo.
¿Por qué los guiones bajos 2x
_siguen ahí?
Es probable que esté reemplazando algo que en realidad no es un guión bajo
¿Conocen una mejor manera de lograr eso?
Sí. Intente usar un RegExp
const date = new Date().toLocaleDateString().replace(/[^apm\d]+/gi, '-') const time = new Date().toLocaleTimeString().replace(/[^apm\d]+/gi, '-') let dateTime = date + '-' + time console.log(dateTime) Esto eliminará cualquier cosa que no sea ( [^...]+ ) a p m o un dígito ( \d ).
/.../gi son las banderas g lobal y no distingue entre mayúsculas y minúsculas.