您的位置:首页 > 其它

根据当前时间取得星期一跟星期天的日期

2011-04-11 11:47 309 查看
上次自己的写法是错误的!!!

package com.boxun.crm.util.mgrtime;

import java.text.SimpleDateFormat;

import java.util.Date;

@SuppressWarnings("unused")
/**
* 创建人:妖孽
* 创建时间:2011-04-11  修改时间2011-04-26
* 功能:获取当前时间——星期一跟星期天的日期
*/
public class TimeTake {

public String[] getTime(){
SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat Fm = new SimpleDateFormat("E");
String time = dateFm.format(new Date());  //当前时间
String d = Fm.format(new Date()); //星期几
String xingYi = "";  //星期一的时间
String xingTi = "";  //星期天的时间
String[] timeArr = time.split("-");
int yyy = Integer.parseInt(timeArr[0]);  //取得当前时间的年
int MMM = Integer.parseInt(timeArr[1]);  //取得当前时间的月
int ddd = Integer.parseInt(timeArr[2]);  //取得当前时间的天
TimeTake t = new TimeTake();
int[] timeArray = new int[6];
if ("星期一".equals(d) || "星期一" == d) {
//返回年份、月份跟星期一或星期天的日期
timeArray = t.tianShu(ddd, MMM, 1, yyy, 0, 6);
}else if("星期二".equals(d) || "星期二" == d){
timeArray = t.tianShu(ddd, MMM, 2, yyy, 1, 5);
}else if("星期三".equals(d) || "星期三" == d){
timeArray = t.tianShu(ddd, MMM, 3, yyy, 2, 4);
}else if("星期四".equals(d) || "星期四" == d){
timeArray = t.tianShu(ddd, MMM, 4, yyy, 3, 3);
}else if("星期五".equals(d) || "星期五" == d){
timeArray = t.tianShu(ddd, MMM, 5, yyy, 4, 2);
}else if("星期六".equals(d) || "星期六" == d){
timeArray = t.tianShu(ddd, MMM, 6, yyy, 5, 1);
}else if("星期天".equals(d) || "星期天" == d){
timeArray = t.tianShu(ddd, MMM, 7, yyy, 6, 0);
}else{
System.out.println("黑色星期八");
return null;
}
return new String[]{timeArray[0]+"-"+timeArray[1]+"-"+timeArray[4] , timeArray[2]+"-"+timeArray[3]+"-"+timeArray[5]};
}

/*
* 判断当前月份是大月还是小月
* 返回月份共有多少天
*/
public int panDuanDaXiao(int MM,int yyy){
//如果是二月份
if(MM == 2){
//如果是闰年
if( yyy % 4 == 0 && yyy % 100 != 0 || yyy % 400 == 0 )
{
return 29;
}
else
{
return 28;
}
}
//如果是小于七月份的单月
if(MM <= 7 && MM % 2 != 0){
return 31;
}
//如果是小于七月份的双月、二月份除外
if(MM < 7 && MM % 2 == 0){
return 30 ;
}

//如果是大于等于8月份的单月
if(MM >= 8 && MM % 2 != 0){
return 30;
}
//如果是大于等于8月份的双月
if(MM >= 8 && MM % 2 == 0){
return 31;
}
return 0;
}

/*
* 计算星期天跟星期一的天数
* 返回年份、月份(星期一/星期天)跟星期一或星期天的日期
* 参数dd为当前天数,MM为当前月数、ee为当前星期数,yyy为当前年数,can1为距离星期一的天数,can1为距离星期天的天数
* 其中can1跟can2最为重要
*/
public int[] tianShu(int dd, int MM ,int ee,int yyy,int can1,int can2){

int xiYi = 0 ;  //星期一的日期天数
int xiTi = 0;  //星期天的日期天数
TimeTake t = new TimeTake();
int mmNum = t.panDuanDaXiao(MM, yyy);  //取得月份天数
int mmNum1 = t.panDuanDaXiao(MM - 1, yyy);  //取得上一个月的月份天数

int yiMM = MM ;  //星期一的月份
int tiMM = MM;  //星期天的月份

int yiYYY = yyy;  //星期一的年份
int tiYYY = yyy;  //星期天的年份

//如果当前天数减去星期数大于等于0、不用返回上一个月计算
if( dd - ee >= 0 ){
if(1 == ee){
xiYi = dd ;
}else{
xiYi = dd - can1 ;  //星期一的日期天数
}
}else{
//如果当前月份不等于1月
if(yiMM > 1 ){
yiMM = yiMM - 1 ; //当前月份减一
}else{
yiMM = 12 ;
yiYYY = yiYYY - 1 ;
}
xiYi = mmNum1 + dd - ee ; //星期一的日期天数
}

//如果星期天的日期天数小于等于月份天数
if(7 == ee){
xiTi = dd ;
}else{
xiTi = dd  + can2 ;
}
//如果星期天的日期小于等于当前月份日期
if(xiTi <= mmNum){
return new int [] {yiYYY,yiMM,tiYYY,tiMM,xiYi,xiTi};
}else{
xiTi = xiTi - mmNum ; //星期天的日期天数
//如果当前月份不等于12月
if(tiMM < 12 ){
tiMM = tiMM + 1 ; //当前月份加一
}else{
tiMM = 1 ;
tiYYY = tiYYY + 1 ;
}
return new int[]{yiYYY,yiMM,tiYYY,tiMM, xiYi , xiTi};
}

}
}


还好、测试的时候、刚刚给了我这样一个机会改正。奶奶的、以前的写法在跨月跟跨年的时候、就会错得非常离谱
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐