diff --git a/README.md b/README.md index 8788b3ee02..f9c73693c2 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,7 @@ wget -O .env https://raw.githubusercontent.com/immich-app/immich/main/docker/.en * Populate `UPLOAD_LOCATION` as prefered location for storing backup assets. * Populate a secret value for `JWT_SECRET`, you can use this command: `openssl rand -base64 128` * [Optional] Populate Mapbox value to use reverse geocoding. +* [Optional] Populate `TZ` as your timezone, default is `Etc/UTC`. ### Step 3 - Start the containers diff --git a/docker/.env.example b/docker/.env.example index be70ce5d11..a88dcb2059 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -63,4 +63,12 @@ MAPBOX_KEY= # Custom message on the login page, should be written in HTML form. # For example PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.

Email: demo@demo.de
Password: demo" -PUBLIC_LOGIN_PAGE_MESSAGE= \ No newline at end of file +PUBLIC_LOGIN_PAGE_MESSAGE= + +# For correctly display your local time zone on the web, you can set the time zone here. +# Should work fine by default value, however, in case of incorrect timezone in EXIF, this value +# should be set to the correct timezone. +# Command to get timezone: +# - Linux: curl -s http://ip-api.com/json/ | grep -oP '(?<=timezone":")(.*?)(?=")' + +# TZ=Etc/UTC \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index d9863ad236..725331dcfc 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -47,6 +47,8 @@ services: entrypoint: ["/bin/sh", "./entrypoint.sh"] env_file: - .env + environment: + - PUBLIC_TZ=${TZ} restart: always redis: diff --git a/web/src/lib/components/asset-viewer/detail-panel.svelte b/web/src/lib/components/asset-viewer/detail-panel.svelte index 47debc6b32..dbf102c367 100644 --- a/web/src/lib/components/asset-viewer/detail-panel.svelte +++ b/web/src/lib/components/asset-viewer/detail-panel.svelte @@ -7,6 +7,7 @@ import moment from 'moment'; import { createEventDispatcher, onMount } from 'svelte'; import { browser } from '$app/env'; + import { env } from '$env/dynamic/public'; import { AssetResponseDto, AlbumResponseDto } from '@api'; type Leaflet = typeof import('leaflet'); @@ -30,6 +31,13 @@ if (asset.exifInfo?.latitude != null && asset.exifInfo?.longitude != null) { await drawMap(asset.exifInfo.latitude, asset.exifInfo.longitude); } + + // remove timezone when user not config PUBLIC_TZ var. Etc/UTC is used in default. + if (asset.exifInfo?.dateTimeOriginal && !env.PUBLIC_TZ) { + const dateTimeOriginal = asset.exifInfo.dateTimeOriginal; + + asset.exifInfo.dateTimeOriginal = dateTimeOriginal.slice(0, dateTimeOriginal.length - 1); + } } }); @@ -126,11 +134,7 @@

{moment(asset.exifInfo.dateTimeOriginal).format('MMM DD, YYYY')}

- {moment( - asset.exifInfo.dateTimeOriginal - .toString() - .slice(0, asset.exifInfo.dateTimeOriginal.toString().length - 1) - ).format('ddd, hh:mm A')} + {moment(asset.exifInfo.dateTimeOriginal).format('ddd, hh:mm A')}

GMT{moment(asset.exifInfo.dateTimeOriginal).format('Z')}