Я должен сделать упражнение на даты и время в Javascript. Это текст упражнения:

Напишите инструкции, которые позволят вам просматривать (с помощью метода document.write ()) текущую дату и время следующим образом: Saturday 30 April 2011, 12:05

Я объявил две переменные, месяцы и дни. Затем я создал два массива, один из которых содержит месяцы, а другой — дни недели. Затем я попытался извлечь день недели и месяц из массивов.

 var date = new Date(); var set, gg, mm, aaaa, h, m; var month = new Array(12); month = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var days = new Array(7); days = ["Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun"]; set = days[date.getDay()]   " "; gg = date.setDate(6)   " "; mm = month[date.setMonth(3)]   " "; aaaa = date.setYear(2011); h = date.setHours(12)   ":"; m = date.setMinutes(05); document.write(set   gg   mm   aaaa   ", "   h   m); 

Я ожидаю, что вывод этого кода будет "Saturday 30 April 2011, 12:05" , но фактический вывод "Sat 1565123795470 undefined 1302122195470, 1302086195470:1302084335470" .

Я вижу, вы использовали set вместо get. Это, вероятно, вызвало много путаницы.

Еще я заметил, что ты начал свою неделю с понедельника. это может показаться естественным, но в этом случае (и в большинстве программных реализаций) оно должно начинаться с воскресенья. Также рекомендуется использовать getFullYear, так как getYear устарела. Вот моя попытка в коде:

 var date = new Date(); var set, gg, mm, aaaa, h, m; var month = new Array(); month = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var days = new Array(); days = ["Sun", "Mon", "Tue", "Wed", "Tue", "Fri", "Sat"]; set = days[date.getDay()]   " "; gg = date.getDate(6)   " "; mm = month[date.getMonth(3)]   " "; aaaa = date.getFullYear(2011); h = date.getHours(12)   ":"; m = date.getMinutes(05); document.write(set   gg   mm   aaaa   ", "   h   m); 

Это дает мне желаемый результат.

Честно говоря, я думаю, что поиск в интернете тоже помог бы вам. вот ссылка, которую я нашел: https://javascript.info/date

В качестве альтернативы вы можете использовать:

 const fullDateOptions = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute:'2-digit', hour12: false, }; new Date().toLocaleString( 'en-AU', fullDateOptions ); 

ИМХО: это более масштабируемо, чем жесткое кодирование дат, хотя может иметь некоторые особенности реализации, зависящие от браузера.

Также проверьте раздел совместимости для получения дополнительной информации.

Вы используете наборы вместо получения, установка даты / года и т. Д. Вернет метку времени, поэтому ваша строка строится из меток времени.

Если вы переключите .setDate (6), например, на getDate (), тогда он будет правильно получать день месяца

 var date = new Date(); var set, gg, mm, aaaa, h, m; var month = new Array(12); month = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var days = new Array(7); days = ["Mon", "Tue", "Wed", "Tue", "Fri", "Sat", "Sun"]; set = days[date.getDay()]   " "; gg = date.getDate()   " "; mm = month[date.getMonth()]   " "; aaaa = date.getFullYear(); h = date.getHours()   ":"; m = date.getMinutes(); document.write(set   gg   mm   aaaa   ", "   h   m); 

Я также переключился на использование getFullYear, так как getYear не рекомендуется.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getYear