0

代码:

    Iterator<String> termIncomeKeys = termIncome.keySet().iterator();
    while(termIncomeKeys.hasNext()){
        String month = termIncomeKeys.next();
        System.out.println(month);
    }

月份打印为

1月(2012) - 1月(2012)

2012 年 2 月 - 2012 年 3 月

2012 年 4 月 - 2012 年 5 月

六月(2012) - 六月(2012)

七月(2012) - 十月(2012)

我想要实现的是我想在每个条目之间以月为单位打印持续时间。也就是说,第一个条目之间的持续时间是 1 个月,第二个条目之间的持续时间是 2 等等。

4

2 回答 2

2

不知道有没有现成的类可以帮你解析这些字符串,但是逻辑很简单:

将三个字母的月份转换为数字(例如 0-11),并将年份转换为数字。不同的是<year-diff>*12 + <month-diff>,哪里<month-diff>可能是负数。

于 2012-05-10T14:05:28.947 回答
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();
    }
于 2012-05-10T14:04:25.187 回答