如何从日历月份名(How to get month name from Calendar)

2019-07-19 18:16发布

是否有oneliner拿到这个月的名字的时候,我们知道int monthNumber = calendar.get(Calendar.MONTH) 或什么是最简单的方法?

Answer 1:

你会得到这样也。

  String getMonthForInt(int num) {
        String month = "wrong";
        DateFormatSymbols dfs = new DateFormatSymbols();
        String[] months = dfs.getMonths();
        if (num >= 0 && num <= 11 ) {
            month = months[num];
        }
        return month;
    }


Answer 2:

您可以通过实现它的SimpleDateFormat ,其目的是要格式化的日期和时间。

Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));


Answer 3:

这样简单

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


Answer 4:

这是我想出了一类项目的解决方案:

public static String theMonth(int month){
    String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    return monthNames[month];
}

您在传递的数字来自一个Calendar.MONTH电话。



Answer 5:

如果您拥有多语言界面,你可以使用getDisplayName与显示语言的控制,以显示月份的名称。

这里是英文,frensh,阿拉伯语和像“叙利亚”特定国家阿拉伯语显示月份名的例子:

    Calendar c = Calendar.getInstance();
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.FRANCE ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar") ) );
    System.out.println(c.getDisplayName(Calendar.MONTH, Calendar.LONG, new Locale("ar", "SY") ) );
    System.out.println(c.getTime().toString());

其结果是:

  January
  janvier
  يناير
  كانون الثاني
  Sat Jan 17 19:31:30 EET 2015


Answer 6:

SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );

对于某些语言(如俄罗斯),这是获得独立月份名称的唯一正确途径。

这是你会得到什么,如果你使用getDisplayNameCalendarDateFormatSymbols一月:

января(这是正确的一个完整的日期字符串:“10января,2014”)

但在一个独立的月份名称的情况下,你会期望:

一月



Answer 7:

乔达时间

如何使用乔达时间 。 这是一个好得多的日期时间API一起工作(和January意味着这里月份,这不是像日历,它使用0-based指数为月)。

您可以使用AbstractDateTime#toString( pattern )方法中指定的格式来格式化日期:

DateTime date = DateTime.now();
String month = date.toString("MMM");

月份名称从数

如果你想月份名特定月份数,你可以做这样的:

int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");

本土化

上述方法使用您的JVM的当前默认语言环境的月份名称的语言。 要指定一个Locale对象,而不是。

String month = date.toString( "MMM", Locale.CANADA_FRENCH );


Answer 8:

Month::getDisplayName

由于Java 8中,使用Month枚举。 该getDisplayName方法自动本地化月份的名称。

通过:

  • 一个TextStyle确定缩多久或多。
  • 一个Locale指定用于缩写,标点符号等,在转换中使用的人类语言和文化规范

例:

public static String getMonthStandaloneName(Month month) {
    return month.getDisplayName(
        TextStyle.FULL_STANDALONE, 
        Locale.getDefault()
    );
}


Answer 9:

这可能是一个老问题,但作为一个衬垫,以获得该月的名称,当我们知道了指标,我用

String month = new DateFormatSymbols().getMonths()[monthNumber - 1];

或短名称

String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];

请注意,您的monthNumber开始从1计数,而任何的方法,所以你需要从0开始计数上述返回数组。



Answer 10:

这段代码有语言支持。 我曾在Android应用程序中使用它们。

String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,... 

String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...


Answer 11:

你可以得到它这样一行: String monthName = new DataFormatSymbols.getMonths()[cal.get(Calendar.MONTH)]



Answer 12:

这对我的作品:

String getMonthName(int monthNumber) {
    String[] months = new DateFormatSymbols().getMonths();
    int n = monthNumber-1;
    return (n >= 0 && n <= 11) ? months[n] : "wrong number";
}

为了回报"September"与一行:

String month = getMonthName(9);


Answer 13:

单程:

我们有Month的的Java API( java.time.Month )。 我们可以通过使用得到Month.of(month);

这里, Month被索引为数字所以要么可以通过提供Month.JANUARY或提供上述API诸如1,2,3,4中的索引。

方式二:

ZonedDateTime.now().getMonth();

这可java.time.ZonedDateTime



Answer 14:

我创建了一个基于本主题中的反应和使用的DateFormatSymbols答案,你会得到一个本地化的响应科特林扩展。

fun Date.toCalendar(): Calendar {
    val calendar = Calendar.getInstance()
    calendar.time = this
    return calendar
}


fun Date.getMonthName(): String {
    val month = toCalendar()[Calendar.MONTH]
    val dfs = DateFormatSymbols()
    val months = dfs.months
    return months[month]
}


Answer 15:

DateFormat date =  new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));


Answer 16:

它返回月份的英文名称。 04返回APRIL等。

String englishMonth (int month){
        return Month.of(month);
    }


Answer 17:

这为我工作

        import java.text.SimpleDateFormat;
        import java.util.Calendar;


        Calendar cal = Calendar.getInstance();
        String currentdate=new SimpleDateFormat("dd-MMM").format(cal.getTime());


Answer 18:

我发现这很容易( https://docs.oracle.com/javase/tutorial/datetime/iso/enum.html )

private void getCalendarMonth(Date date) {      
    Calendar calendar.setTime(date);
    Month month = Month.of(calendar.get(Calendar.MONTH));       
    Locale locale = Locale.getDefault();
    System.out.println(month.getDisplayName(TextStyle.FULL, locale));
    System.out.println(month.getDisplayName(TextStyle.NARROW, locale));
    System.out.println(month.getDisplayName(TextStyle.SHORT, locale));
}


Answer 19:

从SimpleDateFormat的Java文档:

*         <td><code>"yyyyy.MMMMM.dd GGG hh:mm aaa"</code>
 *         <td><code>02001.July.04 AD 12:08 PM</code>
 *         <td><code>"EEE, d MMM yyyy HH:mm:ss Z"</code>
 *         <td><code>Wed, 4 Jul 2001 12:08:56 -0700</code>


文章来源: How to get month name from Calendar
标签: java calendar