我在将月号转换为月份名称时遇到问题,即仅1或2个月份的返回三月。但是对于1,它应该返回2月吗?以前我有同样的问题...

问题描述 投票:0回答:4
public static String getMonthShortName(int monthNumber) { String monthName = ""; if (monthNumber >= 0 && monthNumber < 12) try { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH, monthNumber); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM"); //simpleDateFormat.setCalendar(calendar); monthName = simpleDateFormat.format(calendar.getTime()); } catch (Exception e) { if (e != null) e.printStackTrace(); } return monthName; }

如果月1或2 在这个说法 monthName = simpleDateFormat.format(calendar.getTime()); 仅返回

-mar
(3月)。但是对于其他数字,它的工作正常。任何一个可以帮助我吗?

返回正确的月份名称的遵守代码。

Calendar cal=Calendar.getInstance(); SimpleDateFormat month_date = new SimpleDateFormat("MMMM"); int monthnum=5; cal.set(Calendar.MONTH,monthnum); String month_name = month_date.format(cal.getTime()); Log.e("",""+month_name);

在这里输出为六月

java android datepicker monthcalendar
4个回答
15
投票

出现问题是因为2月不到30天。
,例如,今天运行此(2014年4月30日):

Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH, 1); System.out.println(calendar.getTime()); 返回


4
投票

您应该在设置月份之前添加代码:

calendar.set(Calendar.DAY_OF_MONTH, 1);
    

Kotlin

fun getMonthByNumber(monthnum:Int):String { val c = Calendar.getInstance() val month_date = SimpleDateFormat("MMMM") c[Calendar.MONTH] = monthnum-1 return month_date.format(c.time) }
谢谢你
    


Tl;dr
java.time.Month.of ( monthNumber )   // Get `Month` enum object for month number, 1-12 for January-December. 
.getDisplayName (                    // Generate localized text for name of this month.
    TextStyle.FULL_STANDALONE ,      // Month name spelled out, not abbreviated. 
    Locale.of ( "en" , "US" )        // English language, United States cultural norms.
)                                    // Returns string with localized text such as “January”. 

3
投票

java.time.Month.getDisplayName

仅在您的日期时间工作中使用现代

java.Time

课程。切勿使用

0
投票

Date

SimpleDateFormat
等。 Aandroid API级别26+具有

Java.Time
的实现。对于早期的Android,最新的工具通过
apidesugaring

.

代表一个月,使用

Month
枚举。获取您的月号的枚举对象。与旧版日期时间类相反,
Java.Time
使用Sane编号:1月至12月1-12
Month month = Month.of ( monthNumber ) ; // 1-12 for January-December.

代理文本是使用Month#getDisplayName.

自动局部局部格式的。

通过一个

TextStyle对象,以指定您想要的时间或缩写。
通过A

Locale
确定要在本地化中使用的人类语言和文化规范。对于具有美国文化规范的英语语言,请使用
en

US

TextStyle style = TextStyle.FULL_STANDALONE ; Locale locale = Locale.of ( "fr" , "CA" ) ; // French language, Canada cultural norms. // In earlier Java versions: Locale locale = Locale.forLanguageTag ( "fr-CA" ) ; String output = month.getDisplayName ( style , locale ) ;

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.