თარიღების ავტომატური კორექტირება 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); // რა თარიღი იქნება?