Вывести вместо даты слово "вчера"

121
07 сентября 2021, 17:40

Не получается вывести "вчера", с "сегодня" и остальными датами проблем нет.

Что не так делаю?

showMessageDateTime(dateTime) {
    let today = new Date(),           // присвоение и форматированние текущей даты
        yesterday = today.getDate() -1,             // присвоение и форматирование текущей даты - 1 день
        roomLastMessageDate = new Date(dateTime);           // присвоение и форматирование даты последнего сообщения комнаты
    if (dateTime) {
        if (today == roomLastMessageDate) {                                                                
            return 'Сегодня'                                                                                
        } else if (yesterday == roomLastMessageDate) {                                                     
            return 'Вчера'                                                                                  
        } else {                                                                                            
            return roomLastMessageDate;                                                                     
        }
    }
}

Теперь проблема, что я всегда попадаю в первое условие(getFormattedDate-функция форматирования даты в нужный формат(дд.мм.гг))

                let today = new Date(),                                                               
                    yesterday = new Date(),                                                        
                    roomLastMessageDate = new Date(dateTime);                                                   
                yesterday.setDate(today.getDate() -1);
                if (dateTime) {
                    if (getFormattedDate(today === roomLastMessageDate)) {                                                                
                        return 'Сегодня'                                                                                
                    } else if (getFormattedDate(yesterday === roomLastMessageDate)) {                                                     
                        return 'Вчера'                                                                                  
                    } else {                                                                                            
                        return roomLastMessageDate;                                                                     
                    }
                }
Answer 1
  1. == не нужно этого делать. Сравнивать нужно через ===.
  2. today.getDate() -1 не вычитает 1 день. Нужно писать так:

    yesterday = new Date()
    yesterday.setDate(today.getDate() -1);
    
  3. Чтоб сравнить теперь дни, можно использовать getTime, сбросив предварительно часы, минуты, секунды.

    dropHMS(date){
        date.setHours(0);
        date.setMinutes(0);
        date.setSeconds(0, 0);
    }
    showMessageDateTime(dateTime) {
        let today = new Date(),           // присвоение и форматированние текущей даты
            yesterday = new Date(),             // присвоение и форматирование текущей даты - 1 день
            roomLastMessageDate = new Date(dateTime);           // присвоение и форматирование даты последнего сообщения комнаты
        yesterday.setDate(today.getDate() -1);
        dropHMS(today);
        dropHMS(yesterday);
        dropHMS(roomLastMessageDate );
        if (dateTime) {
            if (today.getTime() === roomLastMessageDate.getTime()) {                                                                
                return 'Сегодня'                                                                                
            } else if (yesterday.getTime() === roomLastMessageDate.getTime()) {                                                     
                return 'Вчера'                                                                                  
            } else {                                                                                            
                return roomLastMessageDate;                                                                     
            }
        }
    }
    
READ ALSO
В чем проблема с этим Promise?

В чем проблема с этим Promise?

почему возвращается catch?

247
Как задать стиль dropmenu у antd без CSS

Как задать стиль dropmenu у antd без CSS

Как сделать, чтобы dropmenu отображалось полностью текст строки, а не часть его

133
js header:excel

js header:excel

Всем привет, есть код, когда он скачивает файл excel, при попытки печати, часть страницы обрезается почти пополам и уезжает на второй листМожет...

322
Проблема доработки скомпилированного js [закрыт]

Проблема доработки скомпилированного js [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

82