如何创建一个获取当前日期和返回月份名称的功能?
我只关注其当前日期,可以是2013/4/12或23/8/8之类的任何日期。
赞String monthName("2013/9/11");
当调用此函数返回月份名称时。
答案 0 :(得分:16)
这应该没问题。
这取决于日期的格式。 如果你试试2011年2月1日 它会工作,只需根据您的需要更改此字符串“MMMM d,yyyy”。 检查this是否有所有格式模式。
而且,月份基于0,所以如果你想1月份为1,那么只需返回月份+ 1
private static int getMonth(String date) throws ParseException{
Date d = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(date);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
int month = cal.get(Calendar.MONTH);
return month + 1;
}
如果你想要月份名称,试试这个
private static String getMonth(String date) throws ParseException{
Date d = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(date);
Calendar cal = Calendar.getInstance();
cal.setTime(d);
String monthName = new SimpleDateFormat("MMMM").format(cal.getTime());
return monthName;
}
正如我所说,检查我发布的所有格式模式的网页。如果您只想要月份的3个字符,请使用“MMM”而不是“MMMM”
答案 1 :(得分:1)
我正在提供现代的答案。
System.out.println(LocalDate.of(2013, Month.SEPTEMBER, 11) // Define the date
.getMonth() // Get the month
.getDisplayName( // Get the month name
TextStyle.FULL_STANDALONE, // No abbreviation
Locale.ENGLISH)); // In which language?
输出为:
9月
LocalDate
作为日期。LocalDate.getMonth()
和Month.getDisplayName()
获取月份名称。Date
,Calendar
和SimpleDateFormat
。这些类的设计不良,麻烦且过时。现代的API更好用。为此,还应避免使用switch
/ case
,因为已经内置了月份名称,并且使用库方法可以使您的代码更清晰,更简洁,更易于出错。 LocalDate today = LocalDate.now(ZoneId.systemDefault());
LocalDate aDate = LocalDate.of(2013, Month.SEPTEMBER, 11); // 2013/9/11
LocalDate anotherDate = LocalDate.of(2023, 8, 8); // 23/8/8
如果将日期作为字符串输入,请使用DateTimeFormatter
解析字符串:
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("u/M/d");
String stringInput = "2013/4/12";
LocalDate date = LocalDate.parse(stringInput, dateFormatter);
System.out.println(date);
2013-04-12
要获取月份名称,您首先需要确定要使用哪种语言。我以英语为例,仍然使用上一摘录中的date
:
String monthName = date.getMonth()
.getDisplayName(TextStyle.FULL_STANDALONE, Locale.ENGLISH);
System.out.println(monthName);
4月
Java用多种语言知道月份名称。如果要使用用户的语言表示月份名称,请将Locale.getDefault()
作为第二个参数传递给getDisplayName()
。
Oracle tutorial: Date Time解释了如何使用java.time。
答案 2 :(得分:0)
使用此代码 -
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH);
所以现在你有了月号,你可以使用switch case获取那个月的名字。
如果您的日期是字符串格式,请使用此 -
Date date = new SimpleDateFormat("yyyy-MM-dd").format(d)
答案 3 :(得分:0)
通过名称获取当前月份的简单解决方案:
SimpleDateFormat formatterMonth = new SimpleDateFormat("MMMM");
String currentMonth = formatterMonth.format(new Date(System.currentTimeMillis()));
使用名称以2013/9/11格式获取任何月份的功能:(未测试)
private String monthName(String dateToCheck){
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
date = formatter.parse(dateToCheck);
SimpleDateFormat formatterMonth = new SimpleDateFormat("MMMM");
return formatterMonth.format(new Date(date.getTime()));
}
答案 4 :(得分:0)
我正在使用这样的函数:
public String getDate(String startDate) throws ParseException {
@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = null;
try {
d = sdf.parse(startDate);
sdf.applyPattern("MMMM dd, YYYY"); //this gives output as=> "Month date, year"
} catch (Exception e) {
Log.d("Exception", e.getLocalizedMessage());
}
return sdf.format(d);
}
答案 5 :(得分:-2)
您可以获得其他答案中描述的月份“数字”,然后您只需使用开关获取名称即可。 例如:
switch(month) {
case 0:
your name is January
break;
...
}
P.S。我认为几个月是零基础但我不是百分之百确定...