fix(mobile): Fix the issue that the metadata sheet was displaying dates in the device's system timezone instead of the timezone where the photo was actually taken #24310
+59
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes
#12650
This fix does not change any behaviour regarding the handling of date & time at the server side.
With this fix, both the metadata display and edit dialog show dates in the actual timezone where photos were taken, matching the web app's behavior exactly, regardless of the mobile devices' current timezone setting.
1. mobile/lib/presentation/widgets/asset_viewer/bottom_sheet.widget.dart
Why: The metadata sheet was displaying dates in the device's system timezone instead of the timezone where the photo was actually taken.
What changed:
_getDateTime()method to use EXIF timezone information (dateTimeOriginal and timeZone fields)formatAsOffset()extension with "GMT" prefix (same as the web app)2. mobile/lib/services/action.service.dart
Why: The edit date/time dialog was also using the device's timezone when pre-filling the initial date, causing inconsistency between the displayed date and the editable date.
What changed:
editDateTime()method to apply EXIF timezone conversion before showing the date pickerHow Has This Been Tested?
Screenshots (if appropriate)
Checklist:
src/services/uses repositories implementations for database calls, filesystem operations, etc.src/repositories/is pretty basic/simple and does not have any immich specific logic (that belongs insrc/services/)Please describe to which degree, if any, an LLM was used in creating this pull request.
Some codes are generated by Claude Code under human supervision and verification
...