Search in sources :

Example 71 with SimpleDateFormat

use of android.icu.text.SimpleDateFormat in project j2objc by google.

the class DateTimeGeneratorTest method TestEmpty.

@Test
public void TestEmpty() {
    // now nothing
    DateTimePatternGenerator nullGen = DateTimePatternGenerator.getEmptyInstance();
    SimpleDateFormat format = new SimpleDateFormat(nullGen.getBestPattern("yMdHms"), ULocale.ROOT);
    TimeZone rootZone = TimeZone.getTimeZone("Etc/GMT");
    format.setTimeZone(rootZone);
}
Also used : SimpleTimeZone(android.icu.util.SimpleTimeZone) TimeZone(android.icu.util.TimeZone) DateTimePatternGenerator(android.icu.text.DateTimePatternGenerator) SimpleDateFormat(android.icu.text.SimpleDateFormat) Test(org.junit.Test)

Example 72 with SimpleDateFormat

use of android.icu.text.SimpleDateFormat in project j2objc by google.

the class DateTimeGeneratorTest method TestBasic.

@Test
public void TestBasic() {
    ULocale uLocale = null;
    DateTimePatternGenerator dtfg = null;
    Date date = null;
    for (int i = 0; i < dateTestData.length; ++i) {
        if (dateTestData[i] instanceof ULocale) {
            uLocale = (ULocale) dateTestData[i];
            dtfg = DateTimePatternGenerator.getInstance(uLocale);
            if (GENERATE_TEST_DATA)
                logln("new ULocale(\"" + uLocale.toString() + "\"),");
        } else if (dateTestData[i] instanceof Date) {
            date = (Date) dateTestData[i];
            if (GENERATE_TEST_DATA)
                logln("new Date(" + date.getTime() + "L),");
        } else if (dateTestData[i] instanceof String) {
            String testSkeleton = (String) dateTestData[i];
            String pattern = dtfg.getBestPattern(testSkeleton);
            SimpleDateFormat sdf = new SimpleDateFormat(pattern, uLocale);
            String formatted = sdf.format(date);
            if (GENERATE_TEST_DATA)
                logln("new String[] {\"" + testSkeleton + "\", \"" + Utility.escape(formatted) + "\"},");
        // logln(uLocale + "\t" + testSkeleton + "\t" + pattern + "\t" + sdf.format(date));
        } else {
            String[] testPair = (String[]) dateTestData[i];
            String testSkeleton = testPair[0];
            String testFormatted = testPair[1];
            String pattern = dtfg.getBestPattern(testSkeleton);
            SimpleDateFormat sdf = new SimpleDateFormat(pattern, uLocale);
            String formatted = sdf.format(date);
            if (GENERATE_TEST_DATA) {
                logln("new String[] {\"" + testSkeleton + "\", \"" + Utility.escape(formatted) + "\"},");
            } else if (!formatted.equals(testFormatted)) {
                errln(uLocale + "\tformatted string doesn't match test case: " + testSkeleton + "\t generated: " + pattern + "\t expected: " + testFormatted + "\t got: " + formatted);
                if (true) {
                    // debug
                    pattern = dtfg.getBestPattern(testSkeleton);
                    sdf = new SimpleDateFormat(pattern, uLocale);
                    formatted = sdf.format(date);
                }
            }
        // logln(uLocale + "\t" + testSkeleton + "\t" + pattern + "\t" + sdf.format(date));
        }
    }
}
Also used : ULocale(android.icu.util.ULocale) DateTimePatternGenerator(android.icu.text.DateTimePatternGenerator) SimpleDateFormat(android.icu.text.SimpleDateFormat) Date(java.util.Date) Test(org.junit.Test)

Example 73 with SimpleDateFormat

use of android.icu.text.SimpleDateFormat in project j2objc by google.

the class DateTimeGeneratorTest method TestRoot.

@Test
public void TestRoot() {
    DateTimePatternGenerator rootGen = DateTimePatternGenerator.getInstance(ULocale.ROOT);
    SimpleDateFormat rootFormat = new SimpleDateFormat(rootGen.getBestPattern("yMdHms"), ULocale.ROOT);
    rootFormat.setTimeZone(gmt);
    // *** expected result should be "1999-10-14 6:58:59" with current data, changed test temporarily to match current result, needs investigation
    assertEquals("root format: yMdHms", "1999-10-14 06:58:59", rootFormat.format(sampleDate));
}
Also used : DateTimePatternGenerator(android.icu.text.DateTimePatternGenerator) SimpleDateFormat(android.icu.text.SimpleDateFormat) Test(org.junit.Test)

Example 74 with SimpleDateFormat

use of android.icu.text.SimpleDateFormat in project j2objc by google.

the class TimeZoneFormatTest method TestTimeRoundTrip.

/*
     * Test case of round trip time and text.  This test case detects every canonical TimeZone's
     * rule transition since 1900 until 2020, then check if time around each transition can
     * round trip as expected.
     */
@Test
public void TestTimeRoundTrip() {
    boolean TEST_ALL = getBooleanProperty("TimeZoneRoundTripAll", false);
    int startYear, endYear;
    if (TEST_ALL || TestFmwk.getExhaustiveness() > 5) {
        startYear = 1900;
    } else {
        startYear = 1990;
    }
    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
    endYear = cal.get(Calendar.YEAR) + 3;
    cal.set(startYear, Calendar.JANUARY, 1);
    final long START_TIME = cal.getTimeInMillis();
    cal.set(endYear, Calendar.JANUARY, 1);
    final long END_TIME = cal.getTimeInMillis();
    // These patterns are ambiguous at DST->STD local time overlap
    List<String> AMBIGUOUS_DST_DECESSION = Arrays.asList("v", "vvvv", "V", "VV", "VVV", "VVVV");
    // These patterns are ambiguous at STD->STD/DST->DST local time overlap
    List<String> AMBIGUOUS_NEGATIVE_SHIFT = Arrays.asList("z", "zzzz", "v", "vvvv", "V", "VV", "VVV", "VVVV");
    // These patterns only support integer minutes offset
    List<String> MINUTES_OFFSET = Arrays.asList("X", "XX", "XXX", "x", "xx", "xxx");
    // Regex pattern used for filtering zone IDs without exemplar location
    final Pattern LOC_EXCLUSION_PATTERN = Pattern.compile("Etc/.*|SystemV/.*|.*/Riyadh8[7-9]");
    final String BASEPATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS";
    ULocale[] LOCALES = null;
    // timer for performance analysis
    long[] times = new long[PATTERNS.length];
    long timer;
    if (TEST_ALL) {
        // It may take about an hour for testing all locales
        LOCALES = ULocale.getAvailableLocales();
    } else if (TestFmwk.getExhaustiveness() > 5) {
        LOCALES = new ULocale[] { new ULocale("ar_EG"), new ULocale("bg_BG"), new ULocale("ca_ES"), new ULocale("da_DK"), new ULocale("de"), new ULocale("de_DE"), new ULocale("el_GR"), new ULocale("en"), new ULocale("en_AU"), new ULocale("en_CA"), new ULocale("en_US"), new ULocale("es"), new ULocale("es_ES"), new ULocale("es_MX"), new ULocale("fi_FI"), new ULocale("fr"), new ULocale("fr_CA"), new ULocale("fr_FR"), new ULocale("he_IL"), new ULocale("hu_HU"), new ULocale("it"), new ULocale("it_IT"), new ULocale("ja"), new ULocale("ja_JP"), new ULocale("ko"), new ULocale("ko_KR"), new ULocale("nb_NO"), new ULocale("nl_NL"), new ULocale("nn_NO"), new ULocale("pl_PL"), new ULocale("pt"), new ULocale("pt_BR"), new ULocale("pt_PT"), new ULocale("ru_RU"), new ULocale("sv_SE"), new ULocale("th_TH"), new ULocale("tr_TR"), new ULocale("zh"), new ULocale("zh_Hans"), new ULocale("zh_Hans_CN"), new ULocale("zh_Hant"), new ULocale("zh_Hant_HK"), new ULocale("zh_Hant_TW") };
    } else {
        LOCALES = new ULocale[] { new ULocale("en") };
    }
    SimpleDateFormat sdfGMT = new SimpleDateFormat(BASEPATTERN);
    sdfGMT.setTimeZone(TimeZone.getTimeZone("Etc/GMT"));
    long testCounts = 0;
    long[] testTimes = new long[4];
    boolean[] expectedRoundTrip = new boolean[4];
    int testLen = 0;
    for (int locidx = 0; locidx < LOCALES.length; locidx++) {
        logln("Locale: " + LOCALES[locidx].toString());
        for (int patidx = 0; patidx < PATTERNS.length; patidx++) {
            logln("    pattern: " + PATTERNS[patidx]);
            String pattern = BASEPATTERN + " " + PATTERNS[patidx];
            SimpleDateFormat sdf = new SimpleDateFormat(pattern, LOCALES[locidx]);
            boolean minutesOffset = MINUTES_OFFSET.contains(PATTERNS[patidx]);
            Set<String> ids = null;
            if (JDKTZ) {
                ids = new TreeSet<String>();
                String[] jdkIDs = java.util.TimeZone.getAvailableIDs();
                for (String jdkID : jdkIDs) {
                    if (EXCL_TZ_PATTERN.matcher(jdkID).matches()) {
                        continue;
                    }
                    String tmpID = TimeZone.getCanonicalID(jdkID);
                    if (tmpID != null) {
                        ids.add(tmpID);
                    }
                }
            } else {
                ids = TimeZone.getAvailableIDs(SystemTimeZoneType.CANONICAL, null, null);
            }
            for (String id : ids) {
                if (PATTERNS[patidx].equals("V")) {
                    // Some zones do not have short ID assigned, such as Asia/Riyadh87.
                    // The time roundtrip will fail for such zones with pattern "V" (short zone ID).
                    // This is expected behavior.
                    String shortZoneID = ZoneMeta.getShortID(id);
                    if (shortZoneID == null) {
                        continue;
                    }
                } else if (PATTERNS[patidx].equals("VVV")) {
                    // This is expected behavior.
                    if (id.indexOf('/') < 0 || LOC_EXCLUSION_PATTERN.matcher(id).matches()) {
                        continue;
                    }
                }
                if (id.equals("Pacific/Apia") && PATTERNS[patidx].equals("vvvv") && logKnownIssue("11052", "Ambiguous zone name - Samoa Time")) {
                    continue;
                }
                BasicTimeZone btz = (BasicTimeZone) TimeZone.getTimeZone(id, TimeZone.TIMEZONE_ICU);
                TimeZone tz = TimeZone.getTimeZone(id);
                sdf.setTimeZone(tz);
                long t = START_TIME;
                TimeZoneTransition tzt = null;
                boolean middle = true;
                boolean last = false;
                while (t < END_TIME) {
                    if (tzt == null) {
                        testTimes[0] = t;
                        expectedRoundTrip[0] = true;
                        testLen = 1;
                    } else {
                        int fromOffset = tzt.getFrom().getRawOffset() + tzt.getFrom().getDSTSavings();
                        int toOffset = tzt.getTo().getRawOffset() + tzt.getTo().getDSTSavings();
                        int delta = toOffset - fromOffset;
                        if (delta < 0) {
                            boolean isDstDecession = tzt.getFrom().getDSTSavings() > 0 && tzt.getTo().getDSTSavings() == 0;
                            testTimes[0] = t + delta - 1;
                            expectedRoundTrip[0] = true;
                            testTimes[1] = t + delta;
                            expectedRoundTrip[1] = isDstDecession ? !AMBIGUOUS_DST_DECESSION.contains(PATTERNS[patidx]) : !AMBIGUOUS_NEGATIVE_SHIFT.contains(PATTERNS[patidx]);
                            testTimes[2] = t - 1;
                            expectedRoundTrip[2] = isDstDecession ? !AMBIGUOUS_DST_DECESSION.contains(PATTERNS[patidx]) : !AMBIGUOUS_NEGATIVE_SHIFT.contains(PATTERNS[patidx]);
                            testTimes[3] = t;
                            expectedRoundTrip[3] = true;
                            testLen = 4;
                        } else {
                            testTimes[0] = t - 1;
                            expectedRoundTrip[0] = true;
                            testTimes[1] = t;
                            expectedRoundTrip[1] = true;
                            testLen = 2;
                        }
                    }
                    for (int testidx = 0; testidx < testLen; testidx++) {
                        testCounts++;
                        timer = System.currentTimeMillis();
                        String text = sdf.format(new Date(testTimes[testidx]));
                        try {
                            Date parsedDate = sdf.parse(text);
                            long restime = parsedDate.getTime();
                            long timeDiff = restime - testTimes[testidx];
                            boolean bTimeMatch = minutesOffset ? (timeDiff / 60000) * 60000 == 0 : timeDiff == 0;
                            if (!bTimeMatch) {
                                StringBuffer msg = new StringBuffer();
                                msg.append("Time round trip failed for ").append("tzid=").append(id).append(", locale=").append(LOCALES[locidx]).append(", pattern=").append(PATTERNS[patidx]).append(", text=").append(text).append(", gmt=").append(sdfGMT.format(new Date(testTimes[testidx]))).append(", time=").append(testTimes[testidx]).append(", restime=").append(restime).append(", diff=").append(timeDiff);
                                if (expectedRoundTrip[testidx] && !isSpecialTimeRoundTripCase(LOCALES[locidx], id, PATTERNS[patidx], testTimes[testidx])) {
                                    errln("FAIL: " + msg.toString());
                                } else if (REALLY_VERBOSE_LOG) {
                                    logln(msg.toString());
                                }
                            }
                        } catch (ParseException pe) {
                            errln("FAIL: " + pe.getMessage() + " tzid=" + id + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx] + ", text=" + text);
                        }
                        times[patidx] += System.currentTimeMillis() - timer;
                    }
                    if (last) {
                        break;
                    }
                    tzt = btz.getNextTransition(t, false);
                    if (tzt == null) {
                        last = true;
                        t = END_TIME - 1;
                    } else if (middle) {
                        // Test the date in the middle of two transitions.
                        t += (tzt.getTime() - t) / 2;
                        middle = false;
                        tzt = null;
                    } else {
                        t = tzt.getTime();
                    }
                }
            }
        }
    }
    long total = 0;
    logln("### Elapsed time by patterns ###");
    for (int i = 0; i < PATTERNS.length; i++) {
        logln(times[i] + "ms (" + PATTERNS[i] + ")");
        total += times[i];
    }
    logln("Total: " + total + "ms");
    logln("Iteration: " + testCounts);
}
Also used : Pattern(java.util.regex.Pattern) ULocale(android.icu.util.ULocale) Calendar(android.icu.util.Calendar) Date(java.util.Date) BasicTimeZone(android.icu.util.BasicTimeZone) SimpleTimeZone(android.icu.util.SimpleTimeZone) TimeZone(android.icu.util.TimeZone) BasicTimeZone(android.icu.util.BasicTimeZone) TimeZoneTransition(android.icu.util.TimeZoneTransition) ParseException(java.text.ParseException) SimpleDateFormat(android.icu.text.SimpleDateFormat) Test(org.junit.Test)

Example 75 with SimpleDateFormat

use of android.icu.text.SimpleDateFormat in project j2objc by google.

the class TimeZoneFormatTest method TestTimeZoneRoundTrip.

/*
     * Test case for checking if a TimeZone is properly set in the result calendar
     * and if the result TimeZone has the expected behavior.
     */
@Test
public void TestTimeZoneRoundTrip() {
    boolean TEST_ALL = getBooleanProperty("TimeZoneRoundTripAll", false);
    TimeZone unknownZone = new SimpleTimeZone(-31415, "Etc/Unknown");
    int badDstOffset = -1234;
    int badZoneOffset = -2345;
    int[][] testDateData = { { 2007, 1, 15 }, { 2007, 6, 15 }, { 1990, 1, 15 }, { 1990, 6, 15 }, { 1960, 1, 15 }, { 1960, 6, 15 } };
    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
    cal.clear();
    // Set up rule equivalency test range
    long low, high;
    cal.set(1900, 0, 1);
    low = cal.getTimeInMillis();
    cal.set(2040, 0, 1);
    high = cal.getTimeInMillis();
    // Set up test dates
    Date[] DATES = new Date[testDateData.length];
    cal.clear();
    for (int i = 0; i < DATES.length; i++) {
        cal.set(testDateData[i][0], testDateData[i][1], testDateData[i][2]);
        DATES[i] = cal.getTime();
    }
    // Set up test locales
    ULocale[] LOCALES = null;
    if (TEST_ALL || TestFmwk.getExhaustiveness() > 5) {
        LOCALES = ULocale.getAvailableLocales();
    } else {
        LOCALES = new ULocale[] { new ULocale("en"), new ULocale("en_CA"), new ULocale("fr"), new ULocale("zh_Hant") };
    }
    String[] tzids;
    if (JDKTZ) {
        tzids = java.util.TimeZone.getAvailableIDs();
    } else {
        tzids = TimeZone.getAvailableIDs();
    }
    int[] inOffsets = new int[2];
    int[] outOffsets = new int[2];
    // Run the roundtrip test
    for (int locidx = 0; locidx < LOCALES.length; locidx++) {
        logln("Locale: " + LOCALES[locidx].toString());
        String localGMTString = TimeZoneFormat.getInstance(LOCALES[locidx]).formatOffsetLocalizedGMT(0);
        for (int patidx = 0; patidx < PATTERNS.length; patidx++) {
            logln("    pattern: " + PATTERNS[patidx]);
            SimpleDateFormat sdf = new SimpleDateFormat(PATTERNS[patidx], LOCALES[locidx]);
            for (int tzidx = 0; tzidx < tzids.length; tzidx++) {
                if (EXCL_TZ_PATTERN.matcher(tzids[tzidx]).matches()) {
                    continue;
                }
                TimeZone tz = TimeZone.getTimeZone(tzids[tzidx]);
                for (int datidx = 0; datidx < DATES.length; datidx++) {
                    // Format
                    sdf.setTimeZone(tz);
                    String tzstr = sdf.format(DATES[datidx]);
                    // Before parse, set unknown zone to SimpleDateFormat instance
                    // just for making sure that it does not depends on the time zone
                    // originally set.
                    sdf.setTimeZone(unknownZone);
                    // Parse
                    ParsePosition pos = new ParsePosition(0);
                    Calendar outcal = Calendar.getInstance(unknownZone);
                    outcal.set(Calendar.DST_OFFSET, badDstOffset);
                    outcal.set(Calendar.ZONE_OFFSET, badZoneOffset);
                    sdf.parse(tzstr, outcal, pos);
                    // Check the result
                    TimeZone outtz = outcal.getTimeZone();
                    tz.getOffset(DATES[datidx].getTime(), false, inOffsets);
                    outtz.getOffset(DATES[datidx].getTime(), false, outOffsets);
                    if (PATTERNS[patidx].equals("V")) {
                        // Short zone ID - should support roundtrip for canonical CLDR IDs
                        String canonicalID = TimeZone.getCanonicalID(tzids[tzidx]);
                        if (!outtz.getID().equals(canonicalID)) {
                            if (outtz.getID().equals("Etc/Unknown")) {
                                // short zone ID and "unk" is used as the fallback
                                if (REALLY_VERBOSE_LOG) {
                                    logln("Canonical round trip failed (probably as expected); tz=" + tzids[tzidx] + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx] + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr + ", outtz=" + outtz.getID());
                                }
                            } else {
                                errln("Canonical round trip failed; tz=" + tzids[tzidx] + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx] + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr + ", outtz=" + outtz.getID());
                            }
                        }
                    } else if (PATTERNS[patidx].equals("VV")) {
                        // Zone ID - full roundtrip support
                        if (!outtz.getID().equals(tzids[tzidx])) {
                            errln("Zone ID round trip failed; tz=" + tzids[tzidx] + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx] + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr + ", outtz=" + outtz.getID());
                        }
                    } else if (PATTERNS[patidx].equals("VVV") || PATTERNS[patidx].equals("VVVV")) {
                        // Location: time zone rule must be preserved except
                        // zones not actually associated with a specific location.
                        String canonicalID = TimeZone.getCanonicalID(tzids[tzidx]);
                        if (canonicalID != null && !outtz.getID().equals(canonicalID)) {
                            // Canonical ID did not match - check the rules
                            boolean bFailure = false;
                            if ((tz instanceof BasicTimeZone) && (outtz instanceof BasicTimeZone)) {
                                boolean hasNoLocation = TimeZone.getRegion(tzids[tzidx]).equals("001");
                                bFailure = !hasNoLocation && !((BasicTimeZone) outtz).hasEquivalentTransitions(tz, low, high);
                            }
                            if (bFailure) {
                                errln("Canonical round trip failed; tz=" + tzids[tzidx] + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx] + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr + ", outtz=" + outtz.getID());
                            } else if (REALLY_VERBOSE_LOG) {
                                logln("Canonical round trip failed (as expected); tz=" + tzids[tzidx] + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx] + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr + ", outtz=" + outtz.getID());
                            }
                        }
                    } else {
                        boolean isOffsetFormat = (PATTERNS[patidx].charAt(0) == 'Z' || PATTERNS[patidx].charAt(0) == 'O' || PATTERNS[patidx].charAt(0) == 'X' || PATTERNS[patidx].charAt(0) == 'x');
                        boolean minutesOffset = false;
                        if (PATTERNS[patidx].charAt(0) == 'X' || PATTERNS[patidx].charAt(0) == 'x') {
                            minutesOffset = PATTERNS[patidx].length() <= 3;
                        }
                        if (!isOffsetFormat) {
                            // Check if localized GMT format is used as a fallback of name styles
                            int numDigits = 0;
                            for (int n = 0; n < tzstr.length(); n++) {
                                if (UCharacter.isDigit(tzstr.charAt(n))) {
                                    numDigits++;
                                }
                            }
                            isOffsetFormat = (numDigits > 0);
                        }
                        if (isOffsetFormat || tzstr.equals(localGMTString)) {
                            // Localized GMT or ISO: total offset (raw + dst) must be preserved.
                            int inOffset = inOffsets[0] + inOffsets[1];
                            int outOffset = outOffsets[0] + outOffsets[1];
                            int diff = outOffset - inOffset;
                            if (minutesOffset) {
                                diff = (diff / 60000) * 60000;
                            }
                            if (diff != 0) {
                                errln("Offset round trip failed; tz=" + tzids[tzidx] + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx] + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr + ", inOffset=" + inOffset + ", outOffset=" + outOffset);
                            }
                        } else {
                            // Specific or generic: raw offset must be preserved.
                            if (inOffsets[0] != outOffsets[0]) {
                                if (JDKTZ && tzids[tzidx].startsWith("SystemV/")) {
                                    // ICU handles these zones as aliases of existing time zones
                                    if (REALLY_VERBOSE_LOG) {
                                        logln("Raw offset round trip failed; tz=" + tzids[tzidx] + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx] + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr + ", inRawOffset=" + inOffsets[0] + ", outRawOffset=" + outOffsets[0]);
                                    }
                                } else {
                                    errln("Raw offset round trip failed; tz=" + tzids[tzidx] + ", locale=" + LOCALES[locidx] + ", pattern=" + PATTERNS[patidx] + ", time=" + DATES[datidx].getTime() + ", str=" + tzstr + ", inRawOffset=" + inOffsets[0] + ", outRawOffset=" + outOffsets[0]);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
Also used : ULocale(android.icu.util.ULocale) Calendar(android.icu.util.Calendar) Date(java.util.Date) SimpleTimeZone(android.icu.util.SimpleTimeZone) TimeZone(android.icu.util.TimeZone) BasicTimeZone(android.icu.util.BasicTimeZone) BasicTimeZone(android.icu.util.BasicTimeZone) SimpleTimeZone(android.icu.util.SimpleTimeZone) SimpleDateFormat(android.icu.text.SimpleDateFormat) ParsePosition(java.text.ParsePosition) Test(org.junit.Test)

Aggregations

SimpleDateFormat (android.icu.text.SimpleDateFormat)153 Test (org.junit.Test)113 Date (java.util.Date)103 GregorianCalendar (android.icu.util.GregorianCalendar)59 Calendar (android.icu.util.Calendar)53 ParseException (java.text.ParseException)42 DateFormat (android.icu.text.DateFormat)41 JapaneseCalendar (android.icu.util.JapaneseCalendar)41 ULocale (android.icu.util.ULocale)40 IslamicCalendar (android.icu.util.IslamicCalendar)37 ParsePosition (java.text.ParsePosition)36 FieldPosition (java.text.FieldPosition)29 ChineseCalendar (android.icu.util.ChineseCalendar)27 TimeZone (android.icu.util.TimeZone)27 BuddhistCalendar (android.icu.util.BuddhistCalendar)25 ChineseDateFormat (android.icu.text.ChineseDateFormat)21 HebrewCalendar (android.icu.util.HebrewCalendar)21 IOException (java.io.IOException)19 SimpleTimeZone (android.icu.util.SimpleTimeZone)16 Locale (java.util.Locale)14