你先获取到当前的月份,然后再用switch, 把Switch放到循环里,再循环里月份-3, 我给你段代码,你研究一下。 Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, -1);
顶下这个!用Calendar 还是比较方便的
我随便写了个。你看看吧public class Test { public static void main(String[] args) { int Year=getYear("2009-7-13"); int month=getMonth("2009-7-13"); String result=getThisSeasonTime(month)+" "+Year+getMonthToMonth(month); System.out.println(result); } //获取季度 public static String getThisSeasonTime(int month){ String quarter=""; if(month>=1&&month<=3){ quarter="Spring"; } if(month>=4&&month<=6){ quarter="Summer"; } if(month>=7&&month<=9){ quarter = "Autumn"; } if(month>=10&&month<=12){ quarter = "Winter"; } return quarter; }
//获取几月到几月 public static String getMonthToMonth(int month){ String monthToMonth=""; String[] months={"(January-March)","(April-June)","(July-September)","(October-December)"}; int index=month/4; monthToMonth=months[index]; return monthToMonth; }
//取得当前时间 public static Date getDateTime(String dateTime){ Date strDate=java.sql.Date.valueOf(dateTime); return strDate; }
public static int getMonth(String dateTime) { Calendar c=Calendar.getInstance(); c.setTime(getDateTime(dateTime)); int month=c.get(c.MONTH)+1; return month; }
public static int getYear(String dateTime) { Calendar c=Calendar.getInstance(); c.setTime(getDateTime(dateTime)); int year=c.get(c.YEAR); return year; } }
//获取几月到几月 public static String getMonthToMonth(int month){ String monthToMonth=""; String[] months={"(January-March)","(April-June)","(July-September)","(October-December)"}; int index=month/4; monthToMonth=months[index]; return monthToMonth; } 这个错了。应该是: //获取几月到几月 public static String getMonthToMonth(int month){ String monthToMonth=""; String[] months={"(January-March)","(April-June)","(July-September)","(October-December)"}; int index=month/3; monthToMonth=months[index]; return monthToMonth; }
Calendar calendar=Calendar.getInstance(); calendar.set(Calendar.MONTH, Calendar.NOVEMBER); int month=calendar.get(Calendar.MONTH); int season=(month+1+4)/4; System.out.println("当前是"+season+"季度"); 至于包括当前季度的前四个季度,你完成可以用月份去算出来的。
/** * 根据日期获取季度 * @param cal * @return */ private static int getSeason(Calendar cal){ int month=cal.get(Calendar.MONTH); return (month+1+3)/3; }
把Switch放到循环里,再循环里月份-3,
我给你段代码,你研究一下。
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
{
int Year=getYear("2009-7-13");
int month=getMonth("2009-7-13");
String result=getThisSeasonTime(month)+" "+Year+getMonthToMonth(month);
System.out.println(result);
}
//获取季度
public static String getThisSeasonTime(int month){
String quarter="";
if(month>=1&&month<=3){
quarter="Spring";
}
if(month>=4&&month<=6){
quarter="Summer";
}
if(month>=7&&month<=9){
quarter = "Autumn";
}
if(month>=10&&month<=12){
quarter = "Winter";
}
return quarter;
}
//获取几月到几月
public static String getMonthToMonth(int month){
String monthToMonth="";
String[] months={"(January-March)","(April-June)","(July-September)","(October-December)"};
int index=month/4;
monthToMonth=months[index];
return monthToMonth;
}
//取得当前时间
public static Date getDateTime(String dateTime){
Date strDate=java.sql.Date.valueOf(dateTime);
return strDate;
}
public static int getMonth(String dateTime)
{
Calendar c=Calendar.getInstance();
c.setTime(getDateTime(dateTime));
int month=c.get(c.MONTH)+1;
return month;
}
public static int getYear(String dateTime)
{
Calendar c=Calendar.getInstance();
c.setTime(getDateTime(dateTime));
int year=c.get(c.YEAR);
return year;
}
}
public static String getMonthToMonth(int month){
String monthToMonth="";
String[] months={"(January-March)","(April-June)","(July-September)","(October-December)"};
int index=month/4;
monthToMonth=months[index];
return monthToMonth;
}
这个错了。应该是: //获取几月到几月
public static String getMonthToMonth(int month){
String monthToMonth="";
String[] months={"(January-March)","(April-June)","(July-September)","(October-December)"};
int index=month/3;
monthToMonth=months[index];
return monthToMonth;
}
用整数1,2,3,4表示第一,二,三,四季度.
知道月份可以用 q=(月份-1)/3+1 得到月份所在的季度.
当前季度是q,想得到以前的季度,用(q+3-i)%4+1就可以得到以前第i季度.
用一个for(i=1;i<=4;i++) p=(q+3-i)%4+1;就可以得到前面的4个季度不用写那么多代码.
calendar.set(Calendar.MONTH, Calendar.NOVEMBER);
int month=calendar.get(Calendar.MONTH);
int season=(month+1+4)/4;
System.out.println("当前是"+season+"季度");
至于包括当前季度的前四个季度,你完成可以用月份去算出来的。
/**
* 根据日期获取季度
* @param cal
* @return
*/
private static int getSeason(Calendar cal){
int month=cal.get(Calendar.MONTH);
return (month+1+3)/3;
}
//四个季度前的月份
Calendar.add(Calendar.MONTH,-11)
用这个月份一个一个求季度。另外你的问题不太明确。
到底是只求季度还是包括月份。
例如现在是2009-07,你的是要的是:2008第四季度,2009第一季度,2009第二季度,2009第三季度
还是往前把所有的月份求出来:
2009第三季度(2009-07-,?),2009第二季度(2009-04,2009-06),2009第一季度(2009-01,2009-03),2008第四季度(2008-10,2008-12)
还有个地方不明确,2008第四季度你是取:2008第四季度(2008-12,2008-12),还是取四季度的所有???
LZ请回答
/**
* 根据日期获取季度
* @param cal
* @return
*/
private static int getSeason(Calendar cal){
int month=cal.get(Calendar.MONTH);
return (month+1+3)/3;
}
/**
* 获取从当前季度的前四个季度
* @param cal
* @param season
* @return
*/
private static void getLastFourSeason(int CurrentSeason,Calendar cal){
if(CurrentSeason==4){
for (int i = 1; i <=4; i++) {
System.out.println(cal.get(Calendar.YEAR)+"年的第"+i+"季度");
}
}else{
//先找到今年已过的所有季度
for (int i = 1; i <= CurrentSeason; i++) {
System.out.println(cal.get(Calendar.YEAR)+"年的第"+i+"季度");
}
//补全去年的季度
for (int i = 1; i<=4-CurrentSeason; i++) {
System.out.println((cal.get(Calendar.YEAR)-1)+"年的第"+(4-i+1)+"季度");
}
}
}
import java.util.Calendar;public class Quarter { public static void main(String[] args) {
QuarterBean[] quarters = getRecentQuarters(5);
for(int i = 0; i < quarters.length; i++) {
System.out.println(quarters[i].toString());
}
}
/**
* 获得最近的季度
* @param count 需要获得季度的数量
* @return
*/
public static QuarterBean[] getRecentQuarters(int count) {
if(count < 1) {
throw new IllegalArgumentException("count must be great than 0");
}
QuarterBean[] quarters = new QuarterBean[count];
quarters[0] = getCurrentQuarter();
for(int i = 1; i < quarters.length; i++) {
quarters[i] = quarters[i - 1].getPastQuarter();
}
return quarters;
}
/**
* 获得当前季度
* @return
*/
public static QuarterBean getCurrentQuarter() {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
return new QuarterBean(year, getQuarter(month));
}
/**
* 通过月份计算季度
* @param month
* @return
*/
public static int getQuarter(int month) {
if(month < 1 || month > 12) {
throw new IllegalArgumentException("month is invalid.");
}
return (month - 1) / 3 + 1;
}
}class QuarterBean {
public final static int QUARTERS_EVERY_YEAR = 4;
private final static String[] QUARTERS = {
"Q1 {0}(Jan - Mar)",
"Q2 {0}(Apr - Jun)",
"Q3 {0}(Jul - Sep)",
"Q4 {0}(Oct - Dec)"
};
private int year;
private int quarter;
public QuarterBean(int year, int quarter) {
if(quarter < 1 || quarter > QUARTERS_EVERY_YEAR) {
throw new IllegalArgumentException("quarter is invalid.");
}
this.year = year;
this.quarter = quarter;
}
private QuarterBean() {
}
public int getYear() {
return year;
}
public int getQuarter() {
return quarter;
}
/**
* 获得上一季度
* @return
*/
public QuarterBean getPastQuarter() {
QuarterBean bean = new QuarterBean();
int y = (QUARTERS_EVERY_YEAR + 1 - quarter) / QUARTERS_EVERY_YEAR;
bean.year = year - y;
bean.quarter = y * QUARTERS_EVERY_YEAR + (quarter - 1);
return bean;
}
public String toString() {
return MessageFormat.format(QUARTERS[quarter - 1], String.valueOf(year));
}
}