Добавлены функции для работы с датами в локальном формате

- Реализованы вспомогательные функции для преобразования временных меток SQLite в локальное время.
- Обновлено форматирование дат создания и изменения заметок с учетом локали устройства.
- Оптимизирован код для отображения дат в формате "дд.мм.гггг чч:мм" и "дд.мм.гггг" в зависимости от контекста.
This commit is contained in:
Fovway 2025-10-22 23:47:05 +07:00
parent 05706a7e35
commit 1172edf31e

View File

@ -95,6 +95,29 @@ function getFormattedDateTime() {
}; };
} }
// Вспомогательные функции для корректной работы с временем (UTC -> локаль)
function parseSQLiteUtc(ts) {
return new Date(ts.replace(" ", "T") + "Z");
}
function formatLocalDateTime(date) {
return new Intl.DateTimeFormat("ru-RU", {
day: "2-digit",
month: "2-digit",
year: "numeric",
hour: "2-digit",
minute: "2-digit",
}).format(date);
}
function formatLocalDateOnly(date) {
return new Intl.DateTimeFormat("ru-RU", {
day: "2-digit",
month: "2-digit",
year: "numeric",
}).format(date);
}
// Функция для авторасширения текстового поля // Функция для авторасширения текстового поля
function autoExpandTextarea(textarea) { function autoExpandTextarea(textarea) {
textarea.style.height = "auto"; textarea.style.height = "auto";
@ -1200,24 +1223,21 @@ async function renderNotes(notes) {
imagesHtml += "</div>"; imagesHtml += "</div>";
} }
// Форматируем дату создания и дату изменения (в одну строку) // Форматируем дату создания и изменения по локали устройства
let dateDisplay = `${note.date} ${note.time}`; let dateDisplay;
if (note.updated_at && note.created_at !== note.updated_at) { if (note.created_at) {
const createdDate = new Date(note.created_at); const created = parseSQLiteUtc(note.created_at);
const updatedDate = new Date(note.updated_at); if (note.updated_at && note.created_at !== note.updated_at) {
const updated = parseSQLiteUtc(note.updated_at);
const formatDate = (date) => { dateDisplay = `Создано: ${formatLocalDateTime(
const day = String(date.getDate()).padStart(2, "0"); created
const month = String(date.getMonth() + 1).padStart(2, "0"); )} Изменено: ${formatLocalDateTime(updated)}`;
const year = date.getFullYear(); } else {
const hours = String(date.getHours()).padStart(2, "0"); dateDisplay = formatLocalDateTime(created);
const minutes = String(date.getMinutes()).padStart(2, "0"); }
return `${day}.${month}.${year} ${hours}:${minutes}`; } else {
}; // Фолбэк для старых записей
dateDisplay = `${note.date} ${note.time}`;
dateDisplay = `Создано: ${formatDate(
createdDate
)} Изменено: ${formatDate(updatedDate)}`;
} }
const noteHtml = ` const noteHtml = `
@ -2335,11 +2355,7 @@ let currentDate = new Date();
// Функция для преобразования timestamp в формат dd.mm.yyyy // Функция для преобразования timestamp в формат dd.mm.yyyy
function formatDateFromTimestamp(timestamp) { function formatDateFromTimestamp(timestamp) {
const date = new Date(timestamp); return formatLocalDateOnly(parseSQLiteUtc(timestamp));
const day = String(date.getDate()).padStart(2, "0");
const month = String(date.getMonth() + 1).padStart(2, "0");
const year = date.getFullYear();
return `${day}.${month}.${year}`;
} }
// Функция для отображения календаря // Функция для отображения календаря