diff --git a/src/androidTest/java/de/dennisguse/opentracks/share/DescriptionGeneratorTest.java b/src/androidTest/java/de/dennisguse/opentracks/share/DescriptionGeneratorTest.java index e8bdda71c..16a1a59a8 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/share/DescriptionGeneratorTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/share/DescriptionGeneratorTest.java @@ -99,7 +99,7 @@ public class DescriptionGeneratorTest { + "Min elevation: -500 m (-1640 ft)
" + "Elevation gain: 6000 m (19685 ft)
" + "Elevation loss: 6000 m (19685 ft)
" - + "Recorded: " + StringUtils.formatDateTime(OffsetDateTime.ofInstant(START_TIME, ZoneId.systemDefault())) + "
"; + + "Recorded: " + StringUtils.formatDateTimeWithOffset(OffsetDateTime.ofInstant(START_TIME, ZoneId.systemDefault())) + "
"; assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true)); } @@ -135,7 +135,7 @@ public class DescriptionGeneratorTest { + "Fastest pace: 0:10 min/km (0:16 min/mi)
" + "Elevation gain: 6000 m (19685 ft)
" + "Elevation loss: 6000 m (19685 ft)
" - + "Recorded: " + StringUtils.formatDateTime(OffsetDateTime.ofInstant(START_TIME, ZoneId.systemDefault())) + "
"; + + "Recorded: " + StringUtils.formatDateTimeWithOffset(OffsetDateTime.ofInstant(START_TIME, ZoneId.systemDefault())) + "
"; assertEquals(expected, descriptionGenerator.generateTrackDescription(track, true)); } diff --git a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java index e186f9e61..1258a128e 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/StatisticsRecordedFragment.java @@ -182,7 +182,7 @@ public class StatisticsRecordedFragment extends Fragment { private void loadTrackDescription(@NonNull Track track) { viewBinding.statsNameValue.setText(track.getName()); viewBinding.statsDescriptionValue.setText(track.getDescription()); - viewBinding.statsStartDatetimeValue.setText(StringUtils.formatDateTime(track.getStartTime())); + viewBinding.statsStartDatetimeValue.setText(StringUtils.formatDateTimeWithOffsetIfDifferent(track.getStartTime())); } private void updateUI() { diff --git a/src/main/java/de/dennisguse/opentracks/share/DescriptionGenerator.java b/src/main/java/de/dennisguse/opentracks/share/DescriptionGenerator.java index f2c80763a..9bb698f67 100644 --- a/src/main/java/de/dennisguse/opentracks/share/DescriptionGenerator.java +++ b/src/main/java/de/dennisguse/opentracks/share/DescriptionGenerator.java @@ -153,7 +153,7 @@ public class DescriptionGenerator { } // Recorded time - builder.append(context.getString(R.string.description_recorded_time, StringUtils.formatDateTime(OffsetDateTime.ofInstant(stats.getStartTime(), ZoneId.systemDefault())))); + builder.append(context.getString(R.string.description_recorded_time, StringUtils.formatDateTimeWithOffset(OffsetDateTime.ofInstant(stats.getStartTime(), ZoneId.systemDefault())))); builder.append(lineBreak); return builder.toString(); diff --git a/src/main/java/de/dennisguse/opentracks/ui/util/ListItemUtils.java b/src/main/java/de/dennisguse/opentracks/ui/util/ListItemUtils.java index b662ee158..40b2cffb9 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/util/ListItemUtils.java +++ b/src/main/java/de/dennisguse/opentracks/ui/util/ListItemUtils.java @@ -108,7 +108,11 @@ public class ListItemUtils { String timeValue = null; if (!isRecording) { dateValue = StringUtils.formatDateTodayRelative(context, offsetDateTime); - timeValue = offsetDateTime.format(DateTimeFormatter.ofPattern("HH:mm")); + String pattern = "HH:mm"; + if (!offsetDateTime.getOffset().equals(OffsetDateTime.now().getOffset())) { + pattern = "HH:mm x"; + } + timeValue = offsetDateTime.format(DateTimeFormatter.ofPattern(pattern)); } setTextView(context, dateTextView, dateValue, hasPhoto); setTextView(context, timeTextView, timeValue, hasPhoto); diff --git a/src/main/java/de/dennisguse/opentracks/util/StringUtils.java b/src/main/java/de/dennisguse/opentracks/util/StringUtils.java index 97f202645..5c5e0e33f 100644 --- a/src/main/java/de/dennisguse/opentracks/util/StringUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/StringUtils.java @@ -61,13 +61,6 @@ public class StringUtils { private StringUtils() { } - /** - * Formats the date and time of the OffsetDateTime (using default Locale format) - */ - public static String formatDateTime(OffsetDateTime odt) { - return odt.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)); - } - /** * Formats the date and time with the offset (using default Locale format). */ @@ -75,6 +68,13 @@ public class StringUtils { return odt.toZonedDateTime().format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL)); } + public static String formatDateTimeWithOffsetIfDifferent(OffsetDateTime odt) { + if (!odt.getOffset().equals(OffsetDateTime.now().getOffset())) { + return odt.toZonedDateTime().format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL)); + } + return odt.toZonedDateTime().format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)); + } + public static String formatLocalDateTime(LocalDateTime localDateTime) { return localDateTime.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)); }