Index: trunk/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java	(revision 19054)
+++ trunk/test/unit/org/openstreetmap/josm/tools/date/DateUtilsTest.java	(revision 19055)
@@ -24,4 +24,5 @@
 import org.openstreetmap.josm.testutils.annotations.I18n;
 import org.openstreetmap.josm.tools.UncheckedParseException;
+import org.openstreetmap.josm.tools.Utils;
 
 import net.trajano.commons.testing.UtilityClassTestUtil;
@@ -153,12 +154,15 @@
     @Test
     void testFormatTime() {
-        assertEquals("12:00 AM", DateUtils.formatTime(new Date(0), DateFormat.SHORT));
-        assertEquals("1:00 AM", DateUtils.formatTime(new Date(60 * 60 * 1000), DateFormat.SHORT));
-        assertEquals("12:00 AM", DateUtils.formatTime(new Date(999), DateFormat.SHORT));
+        // Somewhere between Java 17 and Java 21, a non-breaking space replaced the original space between the time and AM/PM.
+        final var separator = Utils.getJavaVersion() >= 21 ? '\u202f' : ' ';
+        final var twelveAM = "12:00" + separator + "AM";
+        assertEquals(twelveAM, DateUtils.formatTime(new Date(0), DateFormat.SHORT));
+        assertEquals("1:00" + separator + "AM", DateUtils.formatTime(new Date(60 * 60 * 1000), DateFormat.SHORT));
+        assertEquals(twelveAM, DateUtils.formatTime(new Date(999), DateFormat.SHORT));
         // ignore seconds
-        assertEquals("12:00 AM", DateUtils.formatTime(new Date(5999), DateFormat.SHORT));
+        assertEquals(twelveAM, DateUtils.formatTime(new Date(5999), DateFormat.SHORT));
 
         setTimeZone(TimeZone.getTimeZone("Europe/Berlin"));
-        assertEquals("1:00:00 AM GMT+01:00", DateUtils.formatTime(new Date(0), DateFormat.LONG), "This is mostly dependent upon java.locale.providers. CET is also OK.");
+        assertEquals("1:00:00" + separator + "AM GMT+01:00", DateUtils.formatTime(new Date(0), DateFormat.LONG), "This is mostly dependent upon java.locale.providers. CET is also OK.");
     }
 
