Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 9726)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 9727)
@@ -1318,5 +1318,5 @@
     }
 
-    private static String formatTimezone(double timezone) {
+    static String formatTimezone(double timezone) {
         StringBuilder ret = new StringBuilder();
 
@@ -1337,5 +1337,5 @@
     }
 
-    private static double parseTimezone(String timezone) throws ParseException {
+    static double parseTimezone(String timezone) throws ParseException {
 
         if (timezone.isEmpty())
@@ -1408,5 +1408,5 @@
     }
 
-    private static long parseOffset(String offset) throws ParseException {
+    static long parseOffset(String offset) throws ParseException {
         String error = tr("Error while parsing offset.\nExpected format: {0}", "number");
 
Index: trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImagesTest.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImagesTest.java	(revision 9726)
+++ trunk/test/unit/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImagesTest.java	(revision 9727)
@@ -4,4 +4,5 @@
 import static org.junit.Assert.assertEquals;
 
+import java.text.ParseException;
 import java.util.Arrays;
 import java.util.Collections;
@@ -74,3 +75,28 @@
         assertEquals(Pair.create(0.0, -4L), CorrelateGpxWithImages.autoGuess(Collections.singletonList(i0), gpx));
     }
+
+    @Test
+    public void testFormatTimezone() throws Exception {
+        assertEquals("+1:00", CorrelateGpxWithImages.formatTimezone(1));
+        assertEquals("+6:30", CorrelateGpxWithImages.formatTimezone(6.5));
+        assertEquals("-6:30", CorrelateGpxWithImages.formatTimezone(-6.5));
+        assertEquals("+3:08", CorrelateGpxWithImages.formatTimezone(Math.PI));
+        assertEquals("+2:43", CorrelateGpxWithImages.formatTimezone(Math.E));
+    }
+
+    @Test
+    public void testParseTimezone() throws ParseException {
+        assertEquals(1, CorrelateGpxWithImages.parseTimezone("+01:00"), 1e-3);
+        assertEquals(1, CorrelateGpxWithImages.parseTimezone("+1:00"), 1e-3);
+        assertEquals(1.5, CorrelateGpxWithImages.parseTimezone("+01:30"), 1e-3);
+        assertEquals(11.5, CorrelateGpxWithImages.parseTimezone("+11:30"), 1e-3);
+    }
+
+    @Test
+    public void testParseOffest() throws ParseException {
+        assertEquals(0, CorrelateGpxWithImages.parseOffset("0"));
+        assertEquals(4242L, CorrelateGpxWithImages.parseOffset("4242"));
+        assertEquals(-4242L, CorrelateGpxWithImages.parseOffset("-4242"));
+        assertEquals(0L, CorrelateGpxWithImages.parseOffset("-0"));
+    }
 }
