Tengo esta función básica para convertir mis marcas de tiempo de Unix en una cadena de fecha. He visto que me devuelve el mes equivocado (29-10 en vez de 29-11). Pude reproducirlo en JsFiddle. ¿Cual podría ser el problema?
function unixTime(unixtime) { var u = new Date(unixtime*1000); return u.getUTCFullYear() + '-' + ('0' + u.getUTCMonth()).slice(-2) + '-' + ('0' + u.getUTCDate()).slice(-2) // ' ' + ('0' + u.getUTCHours()).slice(-2) + // ':' + ('0' + u.getUTCMinutes()).slice(-2) + // ':' + ('0' + u.getUTCSeconds()).slice(-2) } var test = unixTime(1638178329); console.log(test);Puede usar Date.toLocaleDateString() para formatear cadenas en el formato deseado. Seleccionar una configuración regional de 'sv' le dará fechas ISO y seleccionar la zona horaria 'UTC' le dará la zona horaria correcta.
function unixTime(unixtime) { return new Date(unixtime * 1000).toLocaleDateString('sv', { timeZone: 'UTC'}) } console.log(unixTime(1638178329)) console.log(unixTime(Date.parse('2021-05-04')/1000)) console.log(unixTime(Date.parse('2015-12-25')/1000)) .as-console-wrapper { max-height: 100% !important; top: 0; }