JavaScriptтеги даталарды автоматтык түрдө оңдоо

JavaScript өтө кызыктуу жана пайдалуу өзгөчөлүккө ээ: эгер Date объектисин түзүүдө туура эмес убакыт чекити көрсөтүлсө - ал автоматтык түрдө туура чекитке кайра эсептелет. Келгиле, мисал менен карап көрөлү.

Билген сыяктуу, январь айынын 35 күнү жок. Январь айынын мүмкүн болгон максималдуу күнү - 31. Демек, биздин 35 январь күнү 4 ашыкча күнгө ээ. JavaScript мындай учурда жөн гана ал ашыкча 4 күндү кийинки айга кошуп коёт:

javascriptlet date = new Date(2018, 0, 35);
console.log(date); // 4-февраль болуп чыгат

Ашыкча күндөрдү гана эмес, айларды да көрсөтсө болот. Бул учурда айлар нөлдөн башталарын жана демек акыркы туура ай - 11-чи ай экенин унутпоо керек. Эгер 12-чи айды көрсөтсөк, анда кийинки жылдын январь айы чыгат:

javascriptlet date = new Date(2018, 12, 1); // 12-чи айды көрсөтөбүз
console.log(date); // 2019-жылдын 1-январы чыгат

Жогоруда сүрөттөлгөн оңдоо кичине жагына да иштейт. Билген сыяктуу, айдын эң кичине күнү 1 номерлүү күн болуп саналат. Ошондуктан, эгер 0 номерлүү күндү көрсөтсөк, анда мурунку айдын акыркы күнү чыгат:

javascriptlet date = new Date(2018, 1, 0); // нөлдүнчү күндү көрсөтөбүз
console.log(date); // 31-январь болуп чыгат

Ошондой эле терс маанилүү күндөрдү жана айларды көрсөтсө болот. Бул учурда эң кичине күн 1 номерге, ал эми эң кичине ай - 0 номерге ээ экенин унутпоо керек. Бул дегенди билдирет, минус биринчи күн мурунку айдын акырынан 2 күнгө туура келет, ал эми минус биринчи ай жөн гана мурунку жылдын акыркы айына туура келет:

javascriptlet date = new Date(2018, 1, -1); // -1 күндү көрсөтөбүз
console.log(date); // 30-январь болуп чыгат
javascriptlet date = new Date(2018, -1, 1); // -1 айды көрсөтөбүз
console.log(date); // 2017-жылдын 1-декабры чыгат

Жогоруда айтылгандардын бардыгы сааттар, минуттар жана секунддар менен да ошол сыяктуу иштейт:

javascriptlet date = new Date(2018, 0, 1, 24, 0, 0); // 24-чү саатты көрсөтөбүз
console.log(date); // 2-январдын, 0 сааты чыгат
javascriptlet date = new Date(2018, 0, 1, 25, 0, 0); // 25-чи саатты көрсөтөбүз
console.log(date); // 2-январдын, 1 сааты чыгат
Задание 1

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 1, 35);
console.log(date); // кайсы дата болот?
Задание 2

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 15, 1);
console.log(date); // кайсы дата болот?
Задание 3

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 3, 31);
console.log(date); // кайсы дата болот?
Задание 4

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 1, 31);
console.log(date); // кайсы дата болот?
Задание 5

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 12, 33);
console.log(date); // кайсы дата болот?
Задание 6

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 33, 33);
console.log(date); // кайсы дата болот?
Задание 7

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 5, 0);
console.log(date); // кайсы дата болот?
Задание 8

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 0, 0);
console.log(date); // кайсы дата болот?
Задание 9

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, -12, -33);
console.log(date); // кайсы дата болот?
Задание 10

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 0, 1, 23, 0, 60);
console.log(date); // кайсы дата болот?
Задание 11

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 0, 1, 23, 60, 0);
console.log(date); // кайсы дата болот?
Задание 12

Төмөндөгү убакыт чекитин JavaScript кайсы датага айландыраарын аныктагыла:

javascriptlet date = new Date(2018, 0, 1, 100, 100, 100);
console.log(date); // кайсы дата болот?