Tengo una cadena que estoy tratando de mostrar en hora EST con adiciones AM / PM. De alguna manera no funciona como yo quiero.
Intenté esto:
let item = "2022-02-16T20:08:29" return item.toLocaleString("en-US", { timeZone: "EST" }); resultado esperado 2/16/2022, 8:08:29 PM
salida que 2022-02-16T20:08:29
item es solo una cadena, cuando llama a toLocaleString() en él, se llama al método Object#toLocaleString() , que solo devuelve toString() .
Si primero crea un objeto Date a partir de su item , su código funciona y se llama al método Date#toLocaleString() :
let item = "2022-02-16T20:08:29" let usDate = (new Date(item)).toLocaleString("en-US", { timeZone: "EST" }); console.log(usDate) Si solo necesita la hora, puede usar Date#toLocaleTimeString() :
let item = "2022-02-16T20:08:29" let usDate = (new Date(item)).toLocaleTimeString("en-US", { timeZone: "EST" }); console.log(usDate)El tiempo que está convirtiendo sigue siendo una cadena, para acceder al método toLocaleString necesita acceder al objeto de fecha.
El objeto de fecha acepta una cadena para analizar en el constructor de la siguiente manera. Si necesita convertir la zona horaria, deberá agregar el parámetro de zona horaria.
let item = '2022-02-16T20:08:29'; function formatDate(date_string){ let date = new Date(date_string); return date.toLocaleString("en-US"); } console.log(formatDate(item))