2014-10-20 38 views
1

我想从没有任何库的整数中减去几个月。Java减去没有库的月份

的问题是,当我减1个月,从第一个月:0(1月)应该是12(月),但是这将是-1 ..

这是我的代码添加

int currentMonthInt = Integer.parseInt(currentMonth) - 1; 
    int currentYearInt = Integer.parseInt(currentYear); 

    // show today month 
    if (dateposition == 0){ 
     showListView(currentMonth, currentYear, db); 
    } 

    // show next month 
    for (int i = 1; i <=200; i++){ 
     if (dateposition == i){ 
      int month = currentMonthInt + i; 
      int year = currentYearInt + (month/12); 
      month = (month % 12)+1; 

      String monthString = String.format("%02d", month); 
      String yearString = String.valueOf(year); 
      showListView(monthString, yearString, db); 
     } 
    } 

,这是我减去代码:(但忽略了最低工作)

for (int i = -200; i < 0; i++){ 
      //This is not correct! 
      //int month = currentMonthInt + i; 
      //int year = currentYearInt + (month/12); 
      //month = (month % 12)+1; 

      String monthString = String.format("%02d", month); 
      String yearString = String.valueOf(year); 
      showListView(monthString, yearString, db); 
    } 

PS dateposition是其+1其下个月一个月如果0的今天个月,一年,如果位置等,如果它-1的分组月

+1

尝试使用[乔达](http://www.joda.org/joda-time/)库 – 2014-10-20 17:04:34

+0

码减去'月=(每月12%)+1;'你确定其正确的? ,如果你有月0,即使在这种情况下,以上公式只会返回你一个。 – 2014-10-20 17:05:41

+0

当'a'为负数时'a%b'可能会给出负数。 – Henry 2014-10-20 17:06:02

回答

0

好吧,我写了,我测试它的工作!

for (int i = -200; i < 0; i++){ 
     if (dateposition == i){ 
      int month = currentMonthInt + i; 
      int year = currentYearInt + (month/12); 

      if (month >= 0){ 
       month = (month % 12)+1; 
      } else { 
       int c1 = Math.abs(month/12) + 1; 
       month += (12 * c1); 
      } 

      String monthString = String.format("%02d", month); 
      String yearString = String.valueOf(year); 
      showListView(monthString, yearString, db); 
     } 
    } 
+0

它在这段代码中有一些问题。 – 2014-11-01 22:42:18

-2

使用Joda library

public void test() { 
    LocalDate fromDate = LocalDate.now(); 
    System.out.println(fromDate); 
    LocalDate newYear = fromDate; 
    for (int i = 0; i < 10; i++) { 
     newYear = newYear.minusMonths(1); 
     System.out.print(newYear + ", "); 
    } 
    System.out.println("\n-------"); 
    newYear = fromDate; 
    for (int i = 0; i < 10; i++) { 
     newYear = newYear.plusMonths(1); 
     System.out.print(newYear + ", "); 
    } 
} 

输出:

2014-10-20 
2014-09-20, 2014-08-20, 2014-07-20, 2014-06-20, 2014-05-20, 2014-04-20, 2014-03-20, 2014-02-20, 2014-01-20, 2013-12-20, 
------- 
2014-11-20, 2014-12-20, 2015-01-20, 2015-02-20, 2015-03-20, 2015-04-20, 2015-05-20, 2015-06-20, 2015-07-20, 2015-08-20, 
+0

谢谢,但我不想使用库。我想使用整数... – 2014-10-20 17:19:15