当我们知道int monthNumber = calendar.get(Calendar.MONTH)
时,是否有一个oneliner来获取当月的名字?或者最简单的方法是什么?
答案 0 :(得分:163)
您可以使用 SimpleDateFormat 来实现它,这是为了格式化日期和时间。
Calendar cal = Calendar.getInstance();
System.out.println(new SimpleDateFormat("MMM").format(cal.getTime()));
答案 1 :(得分:86)
你也会这样。
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;
}
答案 2 :(得分:67)
这很简单
mCalendar = Calendar.getInstance();
String month = mCalendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
答案 3 :(得分:40)
这是我为课堂项目提出的解决方案:
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
来电。
答案 4 :(得分:32)
如果您有多语言界面,可以使用getDisplayName显示月份名称,并控制显示语言。
这是一个在特定国家/地区显示英语,法语,阿拉伯语和阿拉伯语的月份名称的示例,例如&#34;叙利亚&#34;:
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
答案 5 :(得分:14)
SimpleDateFormat dateFormat = new SimpleDateFormat( "LLLL", Locale.getDefault() );
dateFormat.format( date );
对于某些语言(例如俄语),这是获取独立月份名称的唯一正确方法。
如果您使用getDisplayName
或Calendar
中的DateFormatSymbols
作为1月份,则可获得以下内容:
января(这对于完整的日期字符串是正确的:“10января,2014 ”)
但是如果您想要一个独立的月份名称:
<强>январь强>
答案 6 :(得分:10)
如何使用Joda-Time。这是一个更好的日期时间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 );
答案 7 :(得分:9)
Month::getDisplayName
从Java 8开始,使用Month
枚举。 getDisplayName
方法会自动本地化月份名称。
通过:
示例:
public static String getMonthStandaloneName(Month month) {
return month.getDisplayName(
TextStyle.FULL_STANDALONE,
Locale.getDefault()
);
}
答案 8 :(得分:7)
这可能是一个老问题,但是当我们知道指数的时候,作为一个单位来获取当月的名字,我用了
String month = new DateFormatSymbols().getMonths()[monthNumber - 1];
或短名称
String month = new DateFormatSymbols().getShortMonths()[monthNumber - 1];
请注意,您的monthNumber
从1开始计数,而上述任何方法都会返回一个数组,因此您需要从0开始计数。
答案 9 :(得分:3)
此代码具有语言支持。 我在Android App中使用过它们。
String[] mons = new DateFormatSymbols().getShortMonths();//Jan,Feb,Mar,...
String[] months = new DateFormatSymbols().getMonths();//January,Februaty,March,...
答案 10 :(得分:2)
这对我有用:
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);
答案 11 :(得分:2)
一种方式:
我们有Month
Java API(java.time.Month
)。我们可以使用Month.of(month);
在这里,Month
被索引为数字,因此您可以通过Month.JANUARY
提供索引,也可以在上述API中提供索引,例如1、2、3、4。
第二种方式:
ZonedDateTime.now().getMonth();
这在java.time.ZonedDateTime
中可用。
答案 12 :(得分:2)
你可以这样得到一行:
String monthName = new DataFormatSymbols.getMonths()[cal.get(Calendar.MONTH)]
答案 13 :(得分:1)
Calender cal = Calendar.getInstance(Locale.ENGLISH)
String[] mons = new DateFormatSymbols(Locale.ENGLISH).getShortMonths();
int m = cal.get(Calendar.MONTH);
String mName = mons[m];
答案 14 :(得分:1)
我根据此主题中的响应创建了一个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]
}
答案 15 :(得分:0)
最简单的方法
import java.text.DateFormatSymbols;
int month = 3; // March
System.out.println(new DateFormatSymbols().getMonths()[month-1]);
答案 16 :(得分:0)
我发现这容易得多(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));
}
答案 17 :(得分:0)
这对我有用
import java.text.SimpleDateFormat;
import java.util.Calendar;
Calendar cal = Calendar.getInstance();
String currentdate=new SimpleDateFormat("dd-MMM").format(cal.getTime());
答案 18 :(得分:0)
它返回月份的英文名称。 04返回APRIL,依此类推。
String englishMonth (int month){
return Month.of(month);
}
答案 19 :(得分:0)
DateFormat date = new SimpleDateFormat("dd/MMM/yyyy");
Date date1 = new Date();
System.out.println(date.format(date1));
答案 20 :(得分:-3)
:
* <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>