Skip to content

Commit 8d2de92

Browse files
authored
Fix timetable in negative TZ (#332)
## Изменения <!-- Опишите здесь на языке, понятном каждому, изменения, сделанные в исходном коде по пунктам. --> Фикс расписания для временных зон с отрицательным смещением относительно UTC ## Детали реализации <!-- Здесь можно описать технические детали по пунктам. --> ## Check-List <!-- После сохранения у следующих полей появятся галочки, которые нужно проставить мышкой --> - [ ] Вы проверили свой код перед отправкой запроса? - [ ] Вы написали тесты к реализованным функциям? - [ ] Вы не забыли применить форматирование `black` и `isort` для _Back-End_ или `Prettier` для _Front-End_?
1 parent 972bee3 commit 8d2de92

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

src/App.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { useToolbar } from './store/toolbar';
99
import IrdomToolbar from './components/IrdomToolbar.vue';
1010
import CalendarDropdown from './views/timetable/CalendarDropdown.vue';
1111
import { apiClient } from '@/api/';
12+
import { parseLocalYmdDate } from './utils/date';
1213
1314
const profileStore = useProfileStore();
1415
const toolbar = useToolbar();
@@ -44,7 +45,7 @@ onMounted(async () => {
4445
>
4546
<CalendarDropdown
4647
v-if="/\d{4}-\d{2}-\d{2}/.test($route.path)"
47-
:date="new Date($route.params.date as string)"
48+
:date="parseLocalYmdDate($route.params.date as string)"
4849
/>
4950
</IrdomToolbar>
5051
<RouterView />

src/utils/date.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ import { lz } from './utils';
33
export const getWeekdayName = (date: Date, weekday: 'short' | 'long' = 'short') =>
44
date.toLocaleString('ru-RU', { weekday });
55

6+
export const parseLocalYmdDate = (ymd: string) => {
7+
const [year, month, day] = ymd.split('-').map(Number);
8+
return new Date(year, month - 1, day);
9+
};
10+
611
export const getDateWithDayOffset = (date: Date, offset: number) => {
712
const d = new Date(date);
813
d.setDate(date.getDate() + offset);

src/views/timetable/TimetableView.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { computed, ref, watch } from 'vue';
55
import AsyncEventsList from './AsyncEventsList.vue';
66
import CalendarDropdown from './CalendarDropdown.vue';
77
import { useTimetableStore } from '@/store/timetable';
8-
import { stringifyDate, getDateWithDayOffset } from '@/utils/date';
8+
import { stringifyDate, getDateWithDayOffset, parseLocalYmdDate } from '@/utils/date';
99
import { LocalStorage, LocalStorageItem } from '@/models/LocalStorage';
1010
import IrdomLayout from '@/components/IrdomLayout.vue';
1111
import { useToolbar } from '@/store/toolbar';
@@ -39,7 +39,7 @@ toolbar.setup({
3939
});
4040
4141
const date = computed(() => {
42-
return new Date(route.params.date as string);
42+
return parseLocalYmdDate(route.params.date as string);
4343
});
4444
4545
// HACK: на каждое изменение даты обновляем компонент Suspense

0 commit comments

Comments
 (0)