Answers:
您也将获得这种方式。
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实现此目的,该格式用于格式化日期和时间。
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());
октября
而不是Октябрь
您可能期望的。
这是我为一个课堂项目想出的解决方案:
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
电话。
new SimpleDateFormat("MMMM").format(cal.getTime());
如果您具有多语言界面,则可以使用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 );
对于某些语言(例如俄语),这是获取独立月份名称的唯一正确方法。
如果getDisplayName
从1月的Calendar
或中使用,这就是您得到的DateFormatSymbols
:
января(这对于完整的日期字符串是正确的:“ 10января,2014 ”)
但是如果使用独立的月份名称,您将期望:
январь
如何使用Joda-Time。它是一种更好的日期时间API(January
在这里意味着一月。它不像Calendar,它使用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作为月份名称的语言。您想改为指定一个Locale对象。
String month = date.toString( "MMM", Locale.CANADA_FRENCH );
SimpleDateFormat
和Date
Month::getDisplayName
从Java 8开始,使用Month
枚举。的getDisplayName
方法会自动本地化月份的名称。
通过:
例:
public static String getMonthStandaloneName(Month month) {
return month.getDisplayName(
TextStyle.FULL_STANDALONE,
Locale.getDefault()
);
}
该代码具有语言支持。我曾在Android App中使用过它们。
String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,...
String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
我发现这要容易得多(https://docs.oracle.com/javase/tutorial/datetime/iso/enum.html)
private void getCalendarMonth(Date date) {
Calendar calendar = Calendar.getInstance();
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));
}
Month
从1月= 1开始索引,而Calendar从1月= 0开始?一月份不会Month.of(calendar.get(Calendar.MONTH));
失败吗?
单程:
我们有Month
Java(java.time.Month
)API 。我们可以通过使用Month.of(month);
在这里,Month
索引为数字,因此您可以Month.JANUARY
在上述API中提供或提供索引,例如1、2、3、4。
第二种方式:
ZonedDateTime.now().getMonth();
在中可用java.time.ZonedDateTime
。
我根据本主题中的响应创建了一个kotlin扩展,并使用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]
}
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>