mirror of
https://github.com/seanmorley15/AdventureLog.git
synced 2025-07-20 13:29:37 +02:00
Add timezone support for visits, transportation, and lodging
- Introduced TIMEZONES constant in models.py to store valid timezone options. - Updated Visit, Transportation, and Lodging models to include timezone fields. - Modified serializers to include timezone fields in VisitSerializer, TransportationSerializer, and LodgingSerializer. - Enhanced DateRangeCollapse component to handle timezone selection and formatting. - Implemented timezone formatting functions in LodgingCard and TransportationCard components. - Updated LodgingModal and TransportationModal to bind timezone data. - Added VALID_TIMEZONES to dateUtils for consistent timezone management across the application.
This commit is contained in:
parent
b30d6df964
commit
1323d91e32
12 changed files with 1056 additions and 45 deletions
|
@ -18,6 +18,23 @@
|
|||
}
|
||||
}
|
||||
|
||||
function formatDateInTimezone(utcDate: string, timezone?: string): string {
|
||||
if (!utcDate) return '';
|
||||
try {
|
||||
return new Intl.DateTimeFormat(undefined, {
|
||||
timeZone: timezone,
|
||||
year: 'numeric',
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
hour: '2-digit',
|
||||
minute: '2-digit',
|
||||
hour12: true
|
||||
}).format(new Date(utcDate));
|
||||
} catch {
|
||||
return new Date(utcDate).toLocaleString();
|
||||
}
|
||||
}
|
||||
|
||||
export let lodging: Lodging;
|
||||
export let user: User | null = null;
|
||||
export let collection: Collection | null = null;
|
||||
|
@ -119,21 +136,9 @@
|
|||
<div class="flex items-center gap-2">
|
||||
<span class="font-medium text-sm">{$t('adventures.dates')}:</span>
|
||||
<p>
|
||||
{new Date(lodging.check_in).toLocaleString(undefined, {
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
hour: 'numeric',
|
||||
minute: 'numeric'
|
||||
})}
|
||||
-
|
||||
{new Date(lodging.check_out).toLocaleString(undefined, {
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
hour: 'numeric',
|
||||
minute: 'numeric'
|
||||
})}
|
||||
{formatDateInTimezone(lodging.check_in ?? '', lodging.timezone ?? undefined)} –
|
||||
{formatDateInTimezone(lodging.check_out ?? '', lodging.timezone ?? undefined)}
|
||||
<span class="text-xs opacity-60 ml-1">({lodging.timezone})</span>
|
||||
</p>
|
||||
</div>
|
||||
{/if}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue