18-bo'lim: Sana / vaqt¶
π Bu yerda asosiy gap β har tilning sana kutubxonasidan to'g'ri foydalanish (murakkablik deyarli har doim O(1)). Eng katta tuzoq: JS Date'da oylar 0-dan boshlanadi, hamda
getDay()(JS) /weekday()(Python) haftani turli kundan boshlaydi. PHPDateTime, Pythondatetime, JSDate.
194. Joriy vaqt va Unix timestamp¶
β± O(1)
JS Date.now() millisoniya, PHP/Python time() soniya qaytaradi.
JS
PHP Pythonfrom datetime import datetime
import time
now = datetime.now()
timestamp = int(time.time()) # soniyalarda
195. Sanani formatlash (YYYY-MM-DD HH:MM:SS)¶
β± O(1)
JS'da oylar 0-dan (getMonth() + 1 zarur) β klassik xato manbai. PHP/Python format satrlari bu muammodan xoli.
JS
const formatDate = d => {
const pad = n => String(n).padStart(2, "0");
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ` +
`${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
};
196. Satrdan sanani parse qilish¶
β± O(1)
JS faqat ISO formatni ishonchli parse qiladi; aniq format uchun PHP createFromFormat, Python strptime ishonchliroq.
JS
PHP$date = new DateTime("2026-06-09 14:30:00");
// aniq format: DateTime::createFromFormat('d/m/Y', '09/06/2026')
197. Ikki sana orasidagi kunlar farqi¶
β± O(1)
JS β millisoniya farqini kunga bo'lish; PHP diff() DateInterval qaytaradi; Python sanalarni ayirsa timedelta chiqadi.
JS
const daysBetween = (a, b) => {
const ms = Math.abs(b - a);
return Math.floor(ms / (1000 * 60 * 60 * 24));
};
198. Sanaga kun qo'shish¶
β± O(1)
JS setDate oy/yil chegarasini avtomatik to'g'rilaydi; PHP modify; Python timedelta.
JS
PHPfunction addDays(DateTime $d, int $days): DateTime {
$r = clone $d;
$r->modify("+$days days");
return $r;
}
199. Hafta kuni (nomi)¶
β± O(1)
β οΈ JS getDay() va PHP 'w' β 0 = Yakshanba; Python weekday() β 0 = Dushanba (boshqacha!). Indekslashda ehtiyot bo'ling.
JS
const weekday = d =>
["Yakshanba", "Dushanba", "Seshanba", "Chorshanba", "Payshanba", "Juma", "Shanba"][d.getDay()];
function weekday(DateTime $d): string {
$days = ["Yakshanba", "Dushanba", "Seshanba", "Chorshanba", "Payshanba", "Juma", "Shanba"];
return $days[(int) $d->format('w')];
}
def weekday(d):
days = ["Dushanba", "Seshanba", "Chorshanba", "Payshanba", "Juma", "Shanba", "Yakshanba"]
return days[d.weekday()]
200. Oydagi kunlar soni¶
β± O(1)
JS hiyla β keyingi oyning "0-kuni" joriy oyning oxirgi kuni; PHP date('t'); Python calendar.monthrange.
JS
PHPfunction daysInMonth(int $year, int $month): int {
return (int) date('t', mktime(0, 0, 0, $month, 1, $year));
}
201. Yosh hisoblash (tug'ilgan sanadan)¶
β± O(1)
Tug'ilgan kun shu yili hali o'tmagan bo'lsa, 1 yil ayiriladi. PHP diff()->y buni avtomatik qiladi.
JS
const age = birth => {
const today = new Date();
let years = today.getFullYear() - birth.getFullYear();
const m = today.getMonth() - birth.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birth.getDate())) years--;
return years;
};
from datetime import date
def age(birth):
today = date.today()
years = today.year - birth.year
if (today.month, today.day) < (birth.month, birth.day):
years -= 1
return years