我知道这件事已被处理多次但我无法解决。 我正在使用此代码将月份视为字符串:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
final String month = new DateFormatSymbols(Locale.getDefault()).getMonths()[position].toUpperCase();
TextView tvMonth = (TextView) row.findViewById(R.id.tv_mese);
tvMonth.setText(month);
我现在想花一个月的时间。我尝试使用SimpleDateFormat但无济于事。 感谢
答案 0 :(得分:1)
你的问题有点不清楚,所以如果我误解了它,我会事先道歉。我假设您想要月份的数量(即1月份为1月份,2月份为2月份等)。
最容易做的事情(如@waqaslam也提到的那样),就是取位置的值,并添加一个。所以,这将是您的代码片段中的最后一行:
int monthAsWhole = position + 1;
另一种选择,虽然复杂得多,但却要做到以下几点。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
final String month = new DateFormatSymbols(Locale.getDefault()).getMonths()[position].toUpperCase();
Date date = new SimpleDateFormat("MMMMMMMMM", Locale.ENGLISH).parse(month);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int theMonth = cal.get(Calendar.MONTH);
TextView tvMonth = (TextView) row.findViewById(R.id.tv_mese);
tvMonth.setText(month);
在这里,SimpleDateFormat将解析您作为日期变量的最终字符串月份。然后,Calendar变量将使用日期,并且调用该日历变量的Calendar.MONTH常量将基本上返回您的月份变量的整数。对于1月,它将为零,对于2月,它将为1,等等。
由于String变量month不是固有的包含整数的String,因此无法对其进行解析。将 FEBRUARY 之类的字符串转换为字符串的最实用和最合理的方法是将其转换为相关月份的数字表示形式。
希望这有帮助!