如何从日历中获取月份名称
是否有一个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>