如何从日历中获取月份名称

是否有一个oneliner获取月的名字,当我们知道int monthNumber = calendar.get(Calendar.MONTH) ? 或者最简单的方法是什么?

你也会这样。

  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; } 

你可以使用SimpleDateFormat来实现它,这是为了格式化date和时间。

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

像这样简单

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

这是我为一个类项目提出的解决scheme:

 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呼叫。

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

这里是一个例子,显示在“叙利亚”这个特定国家的英文,菲律宾文,阿拉伯文和阿拉伯文的月份名称:

  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 
 SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() ); dateFormat.format( date ); 

对于某些语言(例如俄语),这是获取独立月份名称的唯一正确方法。

如果您使用Calendar DateFormatSymbols或1月份的DateFormatSymbols ,那么这就是您所得到的:

января (对于完整的datestring是正确的:“ 2014年10月10日 ”)

但是如果是独立的月份名称,您会期望:

январь

乔达时间

如何使用乔达时间 。 这是一个非常好的date时间API(和January意思是1月在这里,它不像月历中使用从0-based指数)。

您可以使用AbstractDateTime#toString( pattern )方法以指定格式格式化date:

 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 ); 

自从Java 8:

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

这可能是一个古老的问题,但作为一个class轮,我们知道指数的月份的名字,我用

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

或简称

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

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

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

这适用于我:

 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); 
 DateFormat date = new SimpleDateFormat("dd/MMM/yyyy"); Date date1 = new Date(); System.out.println(date.format(date1)); 

从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>