import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.TimeZone; public final class Test { private static void testParse(Locale locale, String date) { try { new SimpleDateFormat("EEE MMM d hh:mm:ss z yyyy", locale).parse(date); System.out.println(String.format(Locale.ENGLISH, "OK parsing '%s' in locale '%s'", date, locale)); } catch (ParseException pe) { System.out.println(String.format(Locale.ENGLISH, "ERROR parsing '%s' in locale '%s': %s", date, locale, pe.toString())); } } public static void main(String[] args) { for (String id : TimeZone.getAvailableIDs()) { System.out.println("Testing time zone: " + id); TimeZone.setDefault(TimeZone.getTimeZone(id)); // some date today: String date1 = new Date(1440358930504L).toString(); testParse(Locale.ENGLISH, date1); testParse(Locale.US, date1); testParse(Locale.ROOT, date1); // half a year back to hit DST difference: String date2 = new Date(1440358930504L - 86400000L * 180).toString(); testParse(Locale.ENGLISH, date2); testParse(Locale.US, date2); testParse(Locale.ROOT, date2); } } }