我的要求很简单,我需要在屏幕上显示最近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);
我给了它一个很好的想法,但想不出任何可能的解决方案。请帮忙。
答案 0 :(得分: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
答案 1 :(得分: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);
}
答案 2 :(得分: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已根据当前时间返回实例