代码:
Iterator<String> termIncomeKeys = termIncome.keySet().iterator();
while(termIncomeKeys.hasNext()){
String month = termIncomeKeys.next();
System.out.println(month);
}
月份打印为
Jan(2012) - Jan(2012)
2月(2012年) - 3月(2012年)
Apr(2012) - May(2012)
Jun(2012) - Jun(2012)
Jul(2012) - Oct(2012)
我想要实现的是我想在每个条目之间按月打印持续时间。也就是说,第一次进入之间的持续时间是1个月,第二次之间的持续时间是2,依此类推。
答案 0 :(得分:2)
我不知道是否有一个现成的类可以为你解析这些字符串,但逻辑很简单:
将三个字母的月份转换为数字(例如0-11),并将年份转换为数字。
差异为<year-diff>*12 + <month-diff>
,其中<month-diff>
可能为负数。
答案 1 :(得分:1)
假设同一年:
enum Month{
JAN(0),
FEB(1),
MAR(2),
APR(3),
....
DEC(11);
Month(int index){this.index = index;}
int index;
int getIndex() {return index;}
}
Iterator<String> termIncomeKeys = termIncome.keySet().iterator();
while(termIncomeKeys.hasNext()){
String month = termIncomeKeys.next();
String str[] = month.split("-");
String m0 = str[0], m1 = str[1];
String y0 = mo.substr(m0.indexOf('(')+1, mo.lastIndexOf(')'));
String y1 = m1.substr(m1.indexOf('(')+1, m1.lastIndexOf(')'));
int yr0 = Integer.parseInt(yo), yr1 = Integer.parseInt(y1);
m0 = m0.substr(0, mo.indexOf('(')).trim().toUpperCase();
m1 = m1.substr(0, m1.indexOf('(')).trim(),toUpperCase();
int duration = yr1 *Month.valueOf(m1).getIndex() - yr0 *Month.valueOf(m0).getIndex();
}