const TZ = 'Europe/Moscow'; function formatDate(dateStr) { const date = new Date(dateStr + 'T00:00:00'); // getDay() возвращает 0=воскресенье, 1=понедельник, ..., 6=суббота // Конвертируем в формат где 0=понедельник const jsDay = date.getDay(); const weekdayIndex = jsDay === 0 ? 6 : jsDay - 1; // 0=пн, 6=вс const weekdays = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']; const months = ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря']; const weekday = weekdays[weekdayIndex]; const day = date.getDate(); const month = months[date.getMonth()]; return `${weekday}, ${day} ${month}`; } function getTodayInMoscow() { // Получаем текущую дату в таймзоне Moscow const now = new Date(); const formatter = new Intl.DateTimeFormat('en-CA', { timeZone: 'Europe/Moscow', year: 'numeric', month: '2-digit', day: '2-digit' }); return formatter.format(now); } function getTomorrowInLondon() { const today = getTodayInMoscow(); const date = new Date(today); date.setDate(date.getDate() + 1); return date.toISOString().split('T')[0]; } function renderDay(container, titleEl, dateStr, items, isToday = false, isTomorrow = false) { let titleText = formatDate(dateStr); if (isToday) { // Преобразуем "Вторник, 30 декабря" в "Сегодня вторник, 30 декабря" const parts = titleText.split(', '); if (parts.length === 2) { titleText = `Сегодня ${parts[0].toLowerCase()}, ${parts[1]}`; } } else if (isTomorrow) { // Преобразуем "Среда, 31 декабря" в "Завтра среда, 31 декабря" const parts = titleText.split(', '); if (parts.length === 2) { titleText = `Завтра ${parts[0].toLowerCase()}, ${parts[1]}`; } } titleEl.textContent = titleText; const tasks = items.filter(item => item.kind === 'task'); const events = items.filter(item => item.kind === 'event'); let html = ''; if (tasks.length > 0) { html += '