When selecting a a timezone in the date/time change dialog, you can also select a IANA timezone identifier, such as Europe/Rome. These timezones support changes in offset (for example, due to Daylight Savings Time).
However, it seems that timezones in this dialog are fixed at a predetermined offset (the one for the current date?), while they should take the correct offset based on the selected date/time.
1. Open any photo in the Immich web UI
2. Open the change date/time dialog
3. Select the date `2023-11-01 00:00`
4. Select the timezone `Europe/Rome`
5. Make the changes
6. Observe that the set timezone is `UTC+2` rather than `UTC+1` (`Europe/Rome` changes from DST to standard time on `2023-10-29`)
Example with java.time APIs: https://pl.kotl.in/kXXpe6Yzq
If you run the above code snippet, you'll see that the computed offset changes based on the local date/time it is being computed on.
Relevant log output
N/A
Additional information
Looking at the API request that is made, I see that the request is:
So I presume the timezone -> offset computation is done on the client side. Maybe the API should accept a local date time and a timezone ID and the computation should be done by the server?
Ideally, the server would store the timezone ID and compute only when needed, but I'm not sure if the XMP format supports it. The databse definitely supports timezone ID in the timeZone column in the exif table, as I see this kind of data present in my instance:
SELECT DISTINCT "timeZone"
FROM "exif"
ORDER BY "timeZone"
The bug
When selecting a a timezone in the date/time change dialog, you can also select a IANA timezone identifier, such as
Europe/Rome
. These timezones support changes in offset (for example, due to Daylight Savings Time).However, it seems that timezones in this dialog are fixed at a predetermined offset (the one for the current date?), while they should take the correct offset based on the selected date/time.
The OS that Immich Server is running on
Debian 12
Version of Immich Server
v1.112.1
Version of Immich Mobile App
v1.112.1
Platform with the issue
Your docker-compose.yml content
Your .env content
Reproduction steps
Relevant log output
Additional information
Looking at the API request that is made, I see that the request is:
So I presume the timezone -> offset computation is done on the client side. Maybe the API should accept a local date time and a timezone ID and the computation should be done by the server?
Ideally, the server would store the timezone ID and compute only when needed, but I'm not sure if the XMP format supports it. The databse definitely supports timezone ID in the
timeZone
column in theexif
table, as I see this kind of data present in my instance: