Biblioteca Moments.js incluida. Tengo una variable "lastMessage.created_at" Si es la fecha de hoy para mostrar la hora en el formato "h: mm a" si fue ayer, muestra "Ayer" o antes de eso "DMY", ¿cómo hago esto?
Puede crear una función para dar formato a las fechas de entrada, estas pueden ser cadenas (en formatos admitidos), fechas o objetos de momento.
Luego generaremos un formato diferente en función de si la fecha es la misma o posterior al inicio de hoy, el inicio de ayer o anterior a eso.
function formatDisplayDate(input) { const dt = moment(input); const startOfToday = moment().startOf('day'); const startOfYesterday = moment().startOf('day').subtract(1, 'day'); if (dt.isSameOrAfter(startOfToday)) { return dt.format('h:mm a'); } else if (dt.isSameOrAfter(startOfYesterday)) { return 'Yesterday'; } else { // Before yesterday return dt.format('DMY'); } } const inputs = [ new Date().toLocaleString('sv'), new Date(Date.now() - 86400000).toLocaleString('sv'), new Date(Date.now() - 4*86400000).toLocaleString('sv') ]; for (let input of inputs) { console.log(`Input: ${input}, output: ${formatDisplayDate(input)}`); } <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" referrerpolicy="no-referrer"></script>