当我们知道的时候,是否有一个获得月份名称的oneliner int monthNumber = calendar.get(Calendar.MONTH)?或者最简单的方法是什么?
Per*_*ror 176
你可以使用SimpleDateFormat实现它,它用于格式化日期和时间.
Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
Run Code Online (Sandbox Code Playgroud)
sub*_*odh 90
你也会这样.
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;
}
Run Code Online (Sandbox Code Playgroud)
san*_*one 72
就这么简单
mCalendar = Calendar.getInstance();
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
Run Code Online (Sandbox Code Playgroud)
Ter*_*ern 40
这是我为类项目提出的解决方案:
public static String theMonth(int month){
String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
return monthNames[month];
}
Run Code Online (Sandbox Code Playgroud)
您传递的号码来自Calendar.MONTH通话.
Eng*_*r T 32
如果您有多语言界面,则可以使用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());
Run Code Online (Sandbox Code Playgroud)
结果是:
January
janvier
?????
????? ??????
Sat Jan 17 19:31:30 EET 2015
Run Code Online (Sandbox Code Playgroud)
art*_*nig 15
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );
Run Code Online (Sandbox Code Playgroud)
对于某些语言(例如俄语),这是获取独立月份名称的唯一正确方法.
这是你会得到什么,如果你使用getDisplayName来自Calendar或DateFormatSymbols一月:
января(对于完整的日期字符串是正确的:" 10января,2014 ")
但如果是单独的月份名称,您会期望:
январь
Roh*_*ain 11
如何使用Joda-Time.这是一个更好的日期时间API(并且January在这里意味着一月.它不像日历,它使用0-based索引数月).
您可以使用AbstractDateTime#toString( pattern )方法以指定格式格式化日期:
DateTime date = DateTime.now();
String month = date.toString("MMM");
Run Code Online (Sandbox Code Playgroud)
如果您想要特定月份编号的月份名称,您可以这样做:
int month = 3;
String monthName = DateTime.now().withMonthOfYear(month).toString("MMM");
Run Code Online (Sandbox Code Playgroud)
上述方法使用JVM当前的默认语言环境作为月份名称的语言.您想要指定Locale对象.
String month = date.toString( "MMM", Locale.CANADA_FRENCH );
Run Code Online (Sandbox Code Playgroud)
小智 10
Month::getDisplayName从Java 8开始,使用Month枚举.该getDisplayName方法自动本地化月份的名称.
通过:
例:
public static String getMonthStandaloneName(Month month) {
return month.getDisplayName(
TextStyle.FULL_STANDALONE,
Locale.getDefault()
);
}
Run Code Online (Sandbox Code Playgroud)
这可能是一个古老的问题,但是当我们知道指数的时候,作为一个获得月份名称的班轮,我用了
String month = new DateFormatSymbols().getMonths()[monthNumber - 1];
Run Code Online (Sandbox Code Playgroud)
或短名称
String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];
Run Code Online (Sandbox Code Playgroud)
请注意,monthNumber从1开始计数,而上述任何方法都会返回一个数组,因此您需要从0开始计数.