123456789101112131415161718192021222324252627282930313233343536 |
- import 'package:immich_mobile/shared/models/asset.dart';
- import 'package:timezone/timezone.dart';
- extension TZExtension on Asset {
- /// Returns the created time of the asset from the exif info (if available) or from
- /// the fileCreatedAt field, adjusted to the timezone value from the exif info along with
- /// the timezone offset in [Duration]
- (DateTime, Duration) getTZAdjustedTimeAndOffset() {
- DateTime dt = fileCreatedAt.toLocal();
- if (exifInfo?.dateTimeOriginal != null) {
- dt = exifInfo!.dateTimeOriginal!;
- if (exifInfo?.timeZone != null) {
- dt = dt.toUtc();
- try {
- final location = getLocation(exifInfo!.timeZone!);
- dt = TZDateTime.from(dt, location);
- } on LocationNotFoundException {
- RegExp re = RegExp(
- r'^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$',
- caseSensitive: false,
- );
- final m = re.firstMatch(exifInfo!.timeZone!);
- if (m != null) {
- final duration = Duration(
- hours: int.parse(m.group(1) ?? '0'),
- minutes: int.parse(m.group(2) ?? '0'),
- );
- dt = dt.add(duration);
- return (dt, duration);
- }
- }
- }
- }
- return (dt, dt.timeZoneOffset);
- }
- }
|