From baea739043459fba2badd62730ae2cd43a7d3194 Mon Sep 17 00:00:00 2001 From: Fedorov Vladimir Date: Thu, 26 Mar 2026 14:41:25 +0700 Subject: [PATCH] update formats --- src/components/SchedulePage.vue | 6 +++--- src/components/date.ts | 36 +++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/components/SchedulePage.vue b/src/components/SchedulePage.vue index 9a5f071..2448c41 100644 --- a/src/components/SchedulePage.vue +++ b/src/components/SchedulePage.vue @@ -2,7 +2,7 @@ import { onMounted, ref } from 'vue'; import { apiGetDays } from './client'; import type { Schedule } from './models'; -import { formatRussianDate, getRelativeDayName, timeAgo } from './date'; +import { formatRussianDate, formatTime, getRelativeDayName, timeAgo, formatTimeRange } from './date'; import { capitalizeFirstLetter } from './text'; const schedule = ref({ updateTime: "", days: [] }) @@ -21,10 +21,10 @@ onMounted(async () => {

- Сбор: {{ performance.timeCollection }} + Сбор: {{ formatTime(performance.timeCollection) }}
- Время: {{ performance.timeStart }} + Время: {{ formatTimeRange(performance.timeStart) }}
Место: {{ capitalizeFirstLetter(performance.place) }} diff --git a/src/components/date.ts b/src/components/date.ts index e31502b..67246e5 100644 --- a/src/components/date.ts +++ b/src/components/date.ts @@ -149,3 +149,39 @@ export function timeAgo(goDateStr: string): string { }); } +export function formatTime(timeStr: string): string { + if (!timeStr) { + return ""; + } + + return timeStr + // 1. Убираем абсолютно все пробелы (включая табы и неразрывные пробелы) + .replace(/\s+/g, "") + // 2. Заменяем все точки на двоеточия + .replace(/\./g, ":"); +} + +export function formatTimeRange(text: string): string { + if (!text) { + return ""; + } + + return text + // 1. Меняем точку на двоеточие ТОЛЬКО в форматах времени (например, 16.00 -> 16:00) + // (^|[^\d]) - проверяем, что перед цифрой нет других цифр + // ([0-2]?\d) - часы (от 0 до 29) + // \. - сама точка + // ([0-5]\d) - минуты (от 00 до 59) + // (?!\d) - после минут не должно быть других цифр + .replace(/(^|[^\d])([0-2]?\d)\.([0-5]\d)(?!\d)/g, "$1$2:$3") + + // 2. Находим любые дефисы или тире и делаем красивые пробелы вокруг них ("-" -> " - ") + .replace(/\s*([-–—])\s*/g, " - ") + + // 3. На всякий случай сжимаем двойные пробелы в один (если они случайно появились) + .replace(/\s{2,}/g, " ") + + // 4. Убираем пробелы в самом начале и в самом конце строки + .trim(); +} +