Хуанлийн огноог тооцох зарчим
Огнооны тооны машин нь өгөгдсөн эхлэх огнооноос тодорхой хугацааг нэмэх эсвэл хасах замаар ирээдүйн болон өнгөрсөн цаг хугацааны яг таг өдрийг тодорхойлдог. Энэхүү тооцоолол нь зүгээр нэг хоногийн тоог нэмэх бус, бодит хуанлийн системд тулгуурлан хийгддэг. Хуанлийн систем нь өөр өөр хоногтой сарууд болон өндөр жилийг нарийн тооцох шаардлагатай болдог тул гараар бодоход алдаа гарах магадлал өндөр байдаг.
Тооцоолуурыг ашиглахдаа дараах оролтын утгуудыг оруулна:
- Эхлэх огноо: Тооцоолол эхлэх хуанлийн огноо бөгөөд анхны утга нь өнөөдрийн огноо байна.
- Чиглэл: Хугацааг урагшлуулах уу, ухраах уу гэдгийг тодорхойлох "Нэмэх" эсвэл "Хасах" сонголт.
- Жил: 0-ээс 1,000,000 хүртэлх бүхэл тоо.
- Сар: 0-ээс 1,000,000 хүртэлх бүхэл тоо.
- Долоо хоног: 0-ээс 1,000,000 хүртэлх бүхэл тоо.
- Өдөр: 0-ээс 1,000,000 хүртэлх бүхэл тоо.
Эдгээр утгыг оруулсны дараа систем дараах үр дүнгүүдийг бодож гаргана:
- Гарсан огноо: Тооцоолсон огноо болон тухайн өдрийн гараг.
- YYYY-MM-DD форматаар: Олон улсын стандартын дагуу бичигдсэн огноо.
- Эхлэх огнооноос хойших хоног: Эхлэх огноо болон гарсан огнооны хоорондох нийт хоногийн зөрүү.
Хугацааг нэмэх, хасах дараалал
Огноог тооцоолохдоо олон төрлийн хугацааны нэгжийг (жил, сар, долоо хоног, өдөр) зэрэг ашиглаж байгаа үед үйлдлийн дараалал маш чухал байдаг. Энэхүү тооны машин нь дараах тогтсон дарааллаар тооцооллыг гүйцэтгэдэг:
- Эхлээд жил болон сарын өөрчлөлтийг эхлэх огноонд хэрэглэнэ.
- Үүний дараа гарсан огноон дээр долоо хоног болон хоногийн утгыг нэмж эсвэл хасна.
Энэхүү тогтсон дараалал нь хуанлийн саруудын хоногийн тоо өөр өөр байдгаас шалтгаалж үүсэх зөрүүг цэгцтэй шийдвэрлэх боломжийг олгодог.
Сарын төгсгөлийн өдрийг хязгаарлах дүрэм (Clamping)
Хуанлийн тооцоололд тулгардаг гол бэрхшээлийн нэг бол зорилтот сард тухайн өдөр байхгүй байх тохиолдол юм. Жишээлбэл, 1-р сарын 31-ний өдрөөс 1 сарыг хасах эсвэл нэмэх үед 2-р сарын 31 гэсэн огноо байхгүй тул тооцоолол шууд мухардалд ордог.
Энэхүү тооны машин нь ийм тохиолдолд "хязгаарлах" (clamping) дүрмийг баримталдаг. Хэрэв тооцоолсон огноо нь зорилтот сард байхгүй өдөр дээр таарвал үр дүн нь тухайн сарын хамгийн сүүлийн өдөр дээр бууна. Энэ үед системээс "Тухайн өдөр нь зорилтот сард байхгүй тул үр дүн нь тухайн сарын сүүлийн өдөр дээр буулаа." гэсэн тайлбар тэмдэглэлийг хэрэглэгчид харуулдаг.
Хуанлийн хоног ба ажлын өдрийн ялгаа
Огнооны тооцоолол хийхдээ хуанлийн хоног болон ажлын өдрийн ялгааг анхаарах шаардлагатай. Энэхүү тооны машин нь хуанлийн хоногоор тооцооллыг гүйцэтгэдэг. Энэ нь дараах онцлогтой:
- Тооцоололд амралтын өдрүүд (Бямба, Ням) болон нийтийн баярын өдрүүд шууд багтана.
- Хугацааг нэмэх эсвэл хасах үед ямар нэгэн өдрийг алгасахгүйгээр дараалсан хоногоор тооцно.
- Эцсийн үр дүн нь долоо хоногийн аль гараг дээр таарч байгааг харуулдаг тул хэрэглэгч өөрөө ажлын өдөрт шилжүүлэн зохицуулах боломжтой.
Хязгаарлалт ба алдааны мэдэгдлүүд
Тооцоолуурыг зөв ажиллуулахын тулд дараах хязгаарлалт болон дүрмүүдийг мөрдөх шаардлагатай бөгөөд дүрмийг зөрчсөн тохиолдолд систем үр дүнг арилгаж — утгаар орлуулан, холбогдох алдааг заана:
- Дэмжигдэх хугацааны хязгаар: Үр дүн нь зөвхөн 1-ээс 9999 оны хооронд байх ёстой. Хэрэв үр дүн энэ хязгаараас хэтэрвэл "Үр дүн нь дэмжигдэх хязгаараас (1–9999 он) гадуур байна." гэсэн алдаа гарна.
- Оролтын хязгаарлалт: Жил, сар, долоо хоног, өдрийн утга тус бүр нь 1,000,000-аас хэтрэхгүй бүхэл тоо байна. Хэрэв энэ хязгаарыг зөрчвөл "Утга бүр нь 1,000,000-аас хэтрэхгүй бүхэл тоо байх ёстой." гэсэн алдааг харуулна.
- Эхлэх огнооны хүчинтэй байдал: Хэрэв оруулсан эхлэх огноо нь хуанлийн хувьд боломжгүй огноо байвал "Эхлэх огноо хүчингүй байна." гэсэн алдааг заана.
Гарсан үр дүнгүүд болох огноо, ISO формат болон хоногийн зөрүүг хуулж авахын тулд тухайн үр дүнгийн мөр дээр дарахад хангалттай.
Нууцлал ба өгөгдөл боловсруулалт
Энэхүү хэрэгслийг ашиглах үед таны оруулсан огноо болон хувийн мэдээллийн нууцлал бүрэн хадгалагдана. Бүх тооцоолол таны хөтөч дээр хийгддэг тул таны оруулсан огноо таны төхөөрөмжөөс хэзээ ч гадагшлахгүй. Өгөгдөл ямар нэгэн сервер рүү дамжиж хадгалагдахгүй тул нууцлалын өндөр шаардлагатай тооцооллыг ч хийх боломжтой.
Түгээмэл асуултууд
1-р сарын 31 дээр нэг сар нэмбэл хэд болох вэ? 2-р сард 31-ний өдөр байдаггүй тул үр дүн нь тухайн сарын хамгийн сүүлийн өдөр буюу 2-р сарын 28 (өндөр жилд 29) дээр бууна. Энэ нь хуанли, банк болон хүснэгтийн программуудын дагадаг жишиг бөгөөд ийм тохиолдолд төлөвийн мөрөнд мэдэгдэх болно.
Жил, сар, долоо хоног, өдрийг ямар дарааллаар тооцдог вэ? Эхлээд жил болон сарыг шилжүүлж, дараа нь долоо хоног болон хоногийг нэмнэ. Жишээ нь, 1-р сарын 31 дээр нэг сар, нэг өдөр нэмэхэд эхлээд 2-р сарын сүүл рүү шилжиж, дараа нь 3-р сар руу нэг хоногоор алхана. Өөр дарааллаар бодвол өөр өдөр гарч болох тул энэхүү дарааллыг тогтмол бөгөөд тодорхой байлгахаар тогтоосон.
Энэ нь ажлын өдрүүдийг тоолдог уу? Үгүй — энэ тооны машин нь хуанлийн хоногоор тооцдог тул амралтын болон нийтийн баярын өдрүүд тоололд багтана. Үр дүн нь долоо хоногийн аль гараг болохг харуулдаг тул эцсийн хугацаа Бямба эсвэл Ням гарагт таарч байгааг шууд харж, өөрөө шилжүүлэх боломжтой.