0

我的要求很简单,我需要在屏幕上显示最近 3 个季度的时事通讯。
为此,我必须在会话中设置新闻信 pdf 链接。
因此,如果用户在 2013 年 2 月登录,他应该会看到 3 个链接,即

'Newsletter Q1 2013'
'Newsletter Q4 2012'
'Newsletter Q3 2012'

这是到目前为止的代码,

        String newsLetter1 = null;
        String newsLetter2 = null;
        String newsLetter3 = null;
           Date date  = new Date();
           Calendar cal = Calendar.getInstance(Locale.US);
           cal.setTime(date);
           int month = cal.get(Calendar.MONTH);
           int quarter = (month / 3) + 1;
    //Do something here to populate newsLetter1, newsLetter2 , newsLetter3 
      variables based on current date 
           session.setAttribute("newsLetter1", "Newsletter  "+newsLetter1 );
           session.setAttribute("newsLetter2", "Newsletter  "+newsLetter2);
           session.setAttribute("newsLetter3", "Newsletter  "+newsLetter3);

我已经给了它一个很好的想法,但想不出任何可能的解决方案。请帮忙。

4

3 回答 3

2

在每次迭代中,您可以从当前日期开始分 3 个月,并根据您已有的公式计算季度。

int newsLetters = 3;
final Calendar cal = Calendar.getInstance(Locale.US);
for (int i = 0; i < newsLetters; i++) {
  cal.add(Calendar.MONTH, -3);
  int quarter = (cal.get(Calendar.MONTH) / 3) + 1;
  System.out.println("Newsletter Q" + quarter + " " + cal.get(Calendar.YEAR));
}

输出:

Newsletter Q2 2013
Newsletter Q1 2013
Newsletter Q4 2012
于 2013-08-06T12:12:19.920 回答
1

你可以找到季度如下

 Calendar cal=Calendar.getInstance();
    int month = cal.get(Calendar.MONTH);
    int quarter=0;
    if(month<5){
        quarter=1;
        // news letter belongs to quarter 1
    }else if(month<9){
       quarter=2;
       // news letter belongs to quarter 2
    }else {
        quarter=3;
       // news letter belongs to quarter 3
    }

如果你想用季度使用以下年份

 Calendar cal=Calendar.getInstance();
    int month = cal.get(Calendar.MONTH);
    int year =cal.get(Calendar.YEAR);
    if(month<5){
        System.out.println(year+" "+"quarter "+1);
    }else if(month<9){
        System.out.println(year+" "+"quarter "+2);
    }else {
        System.out.println(year+" "+"quarter "+3);
    }
于 2013-08-06T12:05:51.237 回答
0

我会这样做

    Calendar cal = Calendar.getInstance();
    int month = cal.get(Calendar.MONTH);
    int q1 = (month / 3) + 1;
    int q2 = q1 == 1 ? 4 : q1 - 1;
    int q3 = q2 == 1 ? 4 : q2 - 1;
    session.setAttribute("newsLetter1", "Newsletter  " + q1);
    session.setAttribute("newsLetter2", "Newsletter  " + q2);
    session.setAttribute("newsLetter3", "Newsletter  " + q3);

笔记

1) 在这种情况下,语言环境不相关

2)不需要cal.setTime(date),Calendar.getInstance已经根据当前时间返回了一个实例

于 2013-08-06T12:12:25.437 回答