Timezone stuff
This commit is contained in:
rodič
ee0e231a81
revize
f4eb0fa52f
|
@ -14,6 +14,7 @@
|
||||||
"@sveltejs/kit": "^1.3.3",
|
"@sveltejs/kit": "^1.3.3",
|
||||||
"autoprefixer": "^10.4.13",
|
"autoprefixer": "^10.4.13",
|
||||||
"date-fns": "^2.29.3",
|
"date-fns": "^2.29.3",
|
||||||
|
"date-fns-tz": "^2.0.0",
|
||||||
"eslint": "^8.33.0",
|
"eslint": "^8.33.0",
|
||||||
"eslint-config-prettier": "^8.6.0",
|
"eslint-config-prettier": "^8.6.0",
|
||||||
"eslint-plugin-svelte3": "^4.0.0",
|
"eslint-plugin-svelte3": "^4.0.0",
|
||||||
|
@ -980,6 +981,15 @@
|
||||||
"url": "https://opencollective.com/date-fns"
|
"url": "https://opencollective.com/date-fns"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/date-fns-tz": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==",
|
||||||
|
"dev": true,
|
||||||
|
"peerDependencies": {
|
||||||
|
"date-fns": ">=2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/debug": {
|
"node_modules/debug": {
|
||||||
"version": "4.3.4",
|
"version": "4.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
"@sveltejs/kit": "^1.3.3",
|
"@sveltejs/kit": "^1.3.3",
|
||||||
"autoprefixer": "^10.4.13",
|
"autoprefixer": "^10.4.13",
|
||||||
"date-fns": "^2.29.3",
|
"date-fns": "^2.29.3",
|
||||||
|
"date-fns-tz": "^2.0.0",
|
||||||
"eslint": "^8.33.0",
|
"eslint": "^8.33.0",
|
||||||
"eslint-config-prettier": "^8.6.0",
|
"eslint-config-prettier": "^8.6.0",
|
||||||
"eslint-plugin-svelte3": "^4.0.0",
|
"eslint-plugin-svelte3": "^4.0.0",
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
<script>
|
<script>
|
||||||
import { format } from 'date-fns';
|
|
||||||
import ItemLogo from '$lib/components/ItemLogo.svelte';
|
import ItemLogo from '$lib/components/ItemLogo.svelte';
|
||||||
import EventTypeBadge from '$lib/components/EventTypeBadge.svelte';
|
import EventTypeBadge from '$lib/components/EventTypeBadge.svelte';
|
||||||
|
import { config } from '$lib/pbw';
|
||||||
|
import { format } from 'date-fns';
|
||||||
|
import { formatInTimeZone } from 'date-fns-tz'
|
||||||
|
|
||||||
export let segments;
|
export let segments;
|
||||||
export let date;
|
export let date;
|
||||||
|
@ -34,8 +36,9 @@
|
||||||
>
|
>
|
||||||
<div class="flex gap-2">
|
<div class="flex gap-2">
|
||||||
<div class="text-xl md:w-32 md:text-right">
|
<div class="text-xl md:w-32 md:text-right">
|
||||||
{format(new Date(segment.startTime), 'HH:mm')} - {format(
|
{formatInTimeZone(new Date(segment.startTime), config.tz, 'HH:mm')} - {formatInTimeZone(
|
||||||
new Date(segment.endTime),
|
new Date(segment.endTime),
|
||||||
|
config.tz,
|
||||||
'HH:mm'
|
'HH:mm'
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
export const config = {
|
export const config = {
|
||||||
|
tz: "Europe/Prague",
|
||||||
collections: {
|
collections: {
|
||||||
places: {
|
places: {
|
||||||
title: 'Places',
|
title: 'Places',
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
import { formatItemDate, bareDomain, getFlagEmoji } from '$lib/utils.js';
|
import { formatItemDate, bareDomain, getFlagEmoji } from '$lib/utils.js';
|
||||||
import { config } from '$lib/pbw';
|
import { config } from '$lib/pbw';
|
||||||
import { format } from 'date-fns';
|
import { format } from 'date-fns';
|
||||||
|
import { formatInTimeZone } from 'date-fns-tz'
|
||||||
|
|
||||||
const colsDef = Object.fromEntries(
|
const colsDef = Object.fromEntries(
|
||||||
Object.keys(config.collections).map((col) => {
|
Object.keys(config.collections).map((col) => {
|
||||||
|
@ -29,7 +30,7 @@
|
||||||
const dates = [];
|
const dates = [];
|
||||||
for (const seg of event.segments) {
|
for (const seg of event.segments) {
|
||||||
if (seg.remote) continue;
|
if (seg.remote) continue;
|
||||||
const date = format(new Date(seg.startTime), 'yyyy-MM-dd');
|
const date = formatInTimeZone(new Date(seg.startTime), config.tz, 'yyyy-MM-dd');
|
||||||
if (!dates.includes(date)) {
|
if (!dates.includes(date)) {
|
||||||
dates.push(date);
|
dates.push(date);
|
||||||
}
|
}
|
||||||
|
@ -369,7 +370,7 @@
|
||||||
<div class="mt-4">
|
<div class="mt-4">
|
||||||
<CalendarList
|
<CalendarList
|
||||||
{date}
|
{date}
|
||||||
segments={item.segments.filter((s) => s.remote || s.startTime.match(new RegExp('^' + date)))}
|
segments={item.segments.filter((s) => s.remote || formatInTimeZone(new Date(s.startTime), config.tz, 'yyyy-MM-dd') === date)}
|
||||||
{entry}
|
{entry}
|
||||||
bundle={data.bundle}
|
bundle={data.bundle}
|
||||||
event={item}
|
event={item}
|
||||||
|
|
Načítá se…
Odkázat v novém úkolu