Why does java.text.DateFormat return the same SHORT format for en_US and en_GB on Android?
===

I have a small Android application which I'm using to print a specific date in different formats based on locale.

Here is my code (using `java.text.DateFormat`):

    Locale[] locales = {new Locale("en", "US"), new Locale("en", "GB"), new Locale("en", "AU"), new Locale("en", "NZ"), new Locale("en", "ZA")};
    for(int i = 0; i < locales.length; ++i) {
        Log.d(logKey, locales[i].toString() + " - " + DateFormat.getDateInstance(DateFormat.SHORT, locales[i]).format(Calendar.getInstance().getTime()));
    }

The output from this in LogCat is thus:

    D/FormatPoC(  390): en_US - 4/27/12
    D/FormatPoC(  390): en_GB - 4/27/12
    D/FormatPoC(  390): en_AU - 4/27/12
    D/FormatPoC(  390): en_NZ - 4/27/12
    D/FormatPoC(  390): en_ZA - 4/27/12

So my question is - why are all of these the same? In Java SE I get:

    en_US - 4/27/12
    en_GB - 27/04/12
    en_AU - 27/04/12
    en_NZ - 27/04/12
    en_ZA - 2012/04/27

Which is what I would expect. I know that I can use `android.text.format.DateFormat` to get correct results based on the user's current locale and date order setting, but that doesn't explain why using `java.text.DateFormat` to get the format for a programmatically specified locale doesn't return the right results.

I've tested it on 3 different devices (2.3 and 4.0) and on the emulator (2.3 and 4.0), all with the same results. I've also tested using `Locale.US` and `Locale.UK` just to see if they're somehow different, but the results are the same.

Has anyone else run into this, or know why this would be?