Month name as a string

前端 未结 11 2026
悲哀的现实
悲哀的现实 2020-11-27 02:49

I\'m trying to return the name of the month as a String, for instance \"May\", \"September\", \"November\".

I tried:

int month = c.get(Calendar.MONTH         


        
相关标签:
11条回答
  • 2020-11-27 03:26

    I would recommend to use Calendar object and Locale since month names are different for different languages:

    // index can be 0 - 11
    private String getMonthName(final int index, final Locale locale, final boolean shortName)
    {
        String format = "%tB";
    
        if (shortName)
            format = "%tb";
    
        Calendar calendar = Calendar.getInstance(locale);
        calendar.set(Calendar.MONTH, index);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
    
        return String.format(locale, format, calendar);
    }
    

    Example for full month name:

    System.out.println(getMonthName(0, Locale.US, false));
    

    Result: January

    Example for short month name:

    System.out.println(getMonthName(0, Locale.US, true));
    

    Result: Jan

    0 讨论(0)
  • 2020-11-27 03:26

    Getting a standalone month name is surprisingly difficult to perform "right" in Java. (At least as of this writing. I'm currently using Java 8).

    The problem is that in some languages, including Russian and Czech, the standalone version of the month name is different from the "formatting" version. Also, it appears that no single Java API will just give you the "best" string. The majority of answers posted here so far only offer the formatting version. Pasted below is a working solution for getting the standalone version of a single month name, or getting an array with all of them.

    I hope this saves someone else some time!

    /**
     * getStandaloneMonthName, This returns a standalone month name for the specified month, in the
     * specified locale. In some languages, including Russian and Czech, the standalone version of
     * the month name is different from the version of the month name you would use as part of a
     * full date. (Different from the formatting version).
     *
     * This tries to get the standalone version first. If no mapping is found for a standalone
     * version (Presumably because the supplied language has no standalone version), then this will
     * return the formatting version of the month name.
     */
    private static String getStandaloneMonthName(Month month, Locale locale, boolean capitalize) {
        // Attempt to get the standalone version of the month name.
        String monthName = month.getDisplayName(TextStyle.FULL_STANDALONE, locale);
        String monthNumber = "" + month.getValue();
        // If no mapping was found, then get the formatting version of the month name.
        if (monthName.equals(monthNumber)) {
            DateFormatSymbols dateSymbols = DateFormatSymbols.getInstance(locale);
            monthName = dateSymbols.getMonths()[month.getValue()];
        }
        // If needed, capitalize the month name.
        if ((capitalize) && (monthName != null) && (monthName.length() > 0)) {
            monthName = monthName.substring(0, 1).toUpperCase(locale) + monthName.substring(1);
        }
        return monthName;
    }
    
    /**
     * getStandaloneMonthNames, This returns an array with the standalone version of the full month
     * names.
     */
    private static String[] getStandaloneMonthNames(Locale locale, boolean capitalize) {
        Month[] monthEnums = Month.values();
        ArrayList<String> monthNamesArrayList = new ArrayList<>();
        for (Month monthEnum : monthEnums) {
            monthNamesArrayList.add(getStandaloneMonthName(monthEnum, locale, capitalize));
        }
        // Convert the arraylist to a string array, and return the array.
        String[] monthNames = monthNamesArrayList.toArray(new String[]{});
        return monthNames;
    }
    
    0 讨论(0)
  • 2020-11-27 03:34

    For getting month in string variable use the code below

    For example the month of September:

    M -> 9

    MM -> 09

    MMM -> Sep

    MMMM -> September

    String monthname=(String)android.text.format.DateFormat.format("MMMM", new Date())
    
    0 讨论(0)
  • 2020-11-27 03:36

    A sample way to get the date and time in this format "2018 Nov 01 16:18:22" use this

    DateFormat dateFormat = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");
            Date date = new Date();
             dateFormat.format(date);
    
    0 讨论(0)
  • 2020-11-27 03:37

    Use getDisplayName.

    For earlier API's use String.format(Locale.US,"%tB",c);

    0 讨论(0)
  • 2020-11-27 03:38

    As simple as this

    mCalendar = Calendar.getInstance();    
    String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
    

    Calendar.LONG is to get the full name of the month and Calendar.SHORT gives the name in short. For eg: Calendar.LONG will return January Calendar.SHORT will return Jan

    0 讨论(0)
提交回复
热议问题