@Josa111

Почему пишет дату NaN Invalid Date NaN, в NaN:NaN?

Здравствуйте, нужна дата для сообщение сделал код пишет: Вместо "Сегодня": NaN Invalid Date NaN , в NaN:NaN
Как исправить вот код:
$(document).ready(()=>{
    check()
    const socket = io()
    const cred = JSON.parse(localStorage.getItem("userData"))
    $.ajax({
        url: "/getmessage",
        type: "POST",
        success: function(msg) {
            if(msg.status == "err"){
                new Notification('Ошибка', {body: msg.msg})
            }else{
                msg.data.forEach(el => {
                    // Форматирование времени
                    let msgDate = formatDate(el.time_mark)
                    let currentDate = formatDate(new Date())
                    let x = new Date(currentDate); // 1 Дата
                    let y = new Date(msgDate); // 2 Дата
                    if(Date.parse(x) == Date.parse(y)){
                        console.log("=")
                        let Strtime = "Сегодня, в "+`${new Date(el.time_mark).getHours()}:${new Date(el.time_mark).getMinutes()}`
                    } else {
                        let date = new Date(el.time_mark);  // 2009-11-10
                        let month = date.toLocaleString('default', { month: 'long' });
                        console.log(new Date(el.time_mark))
                        let Strtime = `${new Date(el.time_mark).getDay()} ${month}  ${new Date(el.time_mark).getFullYear()} , в ${new Date(el.time_mark).getHours()}:${new Date(el.time_mark).getMinutes()}`
                    }
                    $("#msg-container").append(`
                        <div class="msg-box" id='${el.id}'>
                            <p class="author">${el.nick}</p>
                            <p class="msg-text">${el.content}</p>
                            <span class="time">${Strtime}</span>
                        </div>
                    `);
                    if(el.nick != cred.nick){
                        $(`#${el.id}`).addClass("not-my")
                    }
                    
                });
                $("#all_mess").scrollTop($("#msg-container").height())
            }
        }
    });

    socket.emit('hello', ({nick: cred.nick}))

    $("#messForm").submit((e)=>{
        e.preventDefault();
        let msg = $("#message").val()
        if(!msg){
            
        }else{
            socket.emit('sendMess', {token: localStorage.getItem('token'), msg: $("#message").val()});
            $("#message").val('');
        }
        
    })

socket.on('addMess', function (data) {
    // Форматирование времени
    let msgDate = formatDate(data.time_mark)
    let currentDate = formatDate(new Date())
    let x = new Date(currentDate); // 1 Дата
    let y = new Date(msgDate); // 2 Дата
    if (Date.parse(x) == Date.parse(y)) {
      console.log("=")
      let Strtime = "Сегодня, в " + `${new Date(data.time_mark).getHours()}:${new Date(data.time_mark).getMinutes()}`
    } else {
      let date = new Date(data.time_mark);  // 2009-11-10
      console.log(date.time_mark)
      let month = date.toLocaleString('default', { month: 'long' });
      console.log(new Date(data.time_mark))
      let Strtime = `${new Date(data.time_mark).getDay()} ${month}  ${new Date(data.time_mark).getFullYear()} , в ${new Date(data.time_mark).getHours()}:${new Date(data.time_mark).getMinutes()}`
      $("#msg-container").append(`
            <div class="msg-box" id='${data.id}'>
                <p class="author">${data.author}</p>
                <p class="msg-text">${data.msg}</p>
                <span class="time">${Strtime}</span>
            </div>
        	`);
      if (data.author != cred.nick) {
        $(`#${data.id}`).addClass("not-my")
      }
      $("#all_mess").scrollTop($("#msg-container").height())
    }
  });
  
    socket.on('toLogin', function(data){
        window.location.href = '/auth'
    })

    socket.on('helloMess', (str)=>{
        $("#msg-container").append(`<span class="hello">${str.mess}</span>`)
        $("#all_mess").scrollTop($("#msg-container").height())
        //setInterval(hideEl, 3000)
    })

});

function hideEl(){
    $('.hello').hide()
}

function formatDate(date) {
    let d = new Date(date),
        month = '' + (d.getMonth() + 1),
        day = '' + d.getDate(),
        year = d.getFullYear();

    if (month.length < 2) 
        month = '0' + month;
    if (day.length < 2) 
        day = '0' + day;

    return [year, month, day].join('-');
}
  • Вопрос задан
  • 339 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Попробуйте так.. Вслепую чуть подправил
spoiler
const oo = n => n.toString().padStart(2, '0');

const formatDate = date => {
  const d = new Date(date);
  const month = oo(d.getMonth() + 1);
  const day = oo(d.getDate());
  const year = d.getFullYear();

  return [year, month, day].join('-');
};

const onMessage = (data, cred) => {
  const { time_mark: timeMark, id, nick, content } = data;
  const { nick: credNick } = cred;
  const msgDate = formatDate(timeMark);
  const currentDate = formatDate(new Date());
  const date = new Date(timeMark); // 2009-11-10
  const time = [date.getHours(), date.getMinutes()].map(oo).join(':');

  let Strtime;
  if (msgDate === currentDate) {
    Strtime = 'Сегодня в ' + time;
  } else {
    const month = date.toLocaleString('default', { month: 'long' });
    Strtime = `${oo(date.getDay())} ${month} ${date.getFullYear()}, в ${time}`;
  }

  $('#msg-container').append(`
      <div class="msg-box" id='${id}' class="${nick === credNick ? '' : 'not-my'}">
          <p class="author">${nick}</p>
          <p class="msg-text">${content}</p>
          <span class="time">${Strtime}</span>
      </div>
  `);
};

$(document).ready(() => {
  check();
  const socket = io();
  const cred = JSON.parse(localStorage.getItem('userData'));
  $.ajax({
    url: '/getmessage',
    type: 'POST',
    success({ status, msg, data }) {
      if (status === 'err') {
        return new Notification('Ошибка', { body: msg });
      }
      data.forEach(message => onMessage(message, cred));
      $('#all_mess').scrollTop($('#msg-container').height());
    },
  });

  socket.emit('hello', { nick: cred.nick });

  $('#messForm').submit(e => {
    e.preventDefault();
    const msg = $('#message').val();
    if (msg) {
      socket.emit('sendMess', { token: localStorage.getItem('token'), msg });
      $('#message').val('');
    }
  });

  socket.on('addMess', data => {
    onMessage(data, cred);
    $('#all_mess').scrollTop($('#msg-container').height());
  });

  socket.on('toLogin', () => {
    window.location.href = '/auth';
  });

  socket.on('helloMess', str => {
    $('#msg-container').append(`<span class="hello">${str.mess}</span>`);
    $('#all_mess').scrollTop($('#msg-container').height());
  });
});

function hideEl() {
  $('.hello').hide();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 нояб. 2024, в 22:21
3000 руб./в час
21 нояб. 2024, в 21:42
100000 руб./за проект
21 нояб. 2024, в 21:30
500 руб./за проект