public static List<CharSequence> truncateCommonSubdir(@NonNull final List<CharSequence> directories) {
        if (directories.size() < 2) {
            return directories;
        }
        String commonEnding = directories.get(0).toString();
        for (int i = 1; i < directories.size(); i++) {
            final String directory = directories.get(i).toString();
            while (!directory.endsWith(commonEnding)) {
                final int offset = commonEnding.indexOf('/', 1);
                if (offset == -1) {
                    return directories;
                }
                commonEnding = commonEnding.substring(offset);
            }
        }
        final List<CharSequence> truncatedDirs = new ArrayList<>(directories.size());
        for (final CharSequence title : directories) {
            truncatedDirs.add(title.subSequence(0, title.length() - commonEnding.length() + 1) + "\u2026");
        }
        return truncatedDirs;
    }
Formatting of the hidden date of a cache

@return {@code null} or hidden date of the cache (or event date of the cache) in human readable format
main/src/main/java/cgeo/geocaching/utils/Formatter.java