您的位置:首页 > 其它

16、根据年月日获取周几 以及整理的日期常用的工具类

2015-03-02 13:35 357 查看
/**
* @param year
* @param month
* @param day
* @return
*/
public static String CaculateWeekDay(int y,int m,int d)
{

String strDate = y+"-"+m+"-"+d;// 定义日期字符串
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");// 定义日期格式
Date date = null;
try {
date = format.parse(strDate);// 将字符串转换为日期
}catch (ParseException e) {
}
Calendar c = Calendar.getInstance();
c.setTime(date);
int dayForWeek = 0;
if(c.get(Calendar.DAY_OF_WEEK) == 1){
dayForWeek = 7;
}else{
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
}
        String day = "";
        switch (dayFotWeek)
        {
          case 0:day = "周日";break;

          case 1:day = "周一";break;  

          case 2:day = "周二";break;

          case 3:day = "周三";break;

          case 4:day = "周四";break;

          case 5:day = "周五";break;

          case 6:day = "周六";break;
         }

return day;

}
使用案例:  CaculateWeekDay(2015,3,2)得到的便是“周一”;

个人使用的日期工具类分享给大家:
/**
* 根据年月日,获取是周几
* @param year
* @param month
* @param day
* @return
*/
public static String CaculateWeekDay(int y,int m,int d)
{

String strDate = y+"-"+m+"-"+d;// 定义日期字符串
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");// 定义日期格式
Date date = null;
try {
date = format.parse(strDate);// 将字符串转换为日期
}catch (ParseException e) {
}
Calendar c = Calendar.getInstance();
c.setTime(date);
int dayForWeek = 0;
if(c.get(Calendar.DAY_OF_WEEK) == 1){
dayForWeek = 7;
}else{
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
}
return Integer.toString(dayForWeek);

}

/**
* 获取今日的日期,举例:20141110,20140110
* @return,日期的字符串
*/
public static  String getNowDateString()
{
Date date = new Date();
//年份
int year = date.getYear() + 1900;
//月份
int month = date.getMonth() + 1;
//日期
int day = date.getDate();

String date_string ;
if(month < 10)
{
if(day < 10)
{
date_string = Integer.toString(year)+"0"+Integer.toString(month)+"0"+Integer.toString(day);
}
else
{
date_string = Integer.toString(year)+"0"+Integer.toString(month)+Integer.toString(day);
}

}
else
{
if(day < 10)
{
date_string = Integer.toString(year)+Integer.toString(month)+"0"+Integer.toString(day);
}
else
{
date_string = Integer.toString(year)+Integer.toString(month)+Integer.toString(day);
}

}
return date_string;
}

/**
* 获取今日包含时间点的日期,举例:2014020202(2014年2月2号2点)
* @return,日期的字符串
*/
public static  String getNowDateAndHourString()
{

String date_string ;
String month_str;
String day_str;
String hour_str;

Date date = new Date();
//年份
int year = date.getYear() + 1900;
//月份
int month = date.getMonth() + 1;
//日期
int day = date.getDate();
//时间
int hour = date.getHours();

//处理月份
if(month < 10)
{
month_str=0+Integer.toString(month);
}
else
{
month_str=Integer.toString(month);
}

//处理日期
if(day < 10)
{
day_str=0+Integer.toString(day);
}
else
{
day_str=Integer.toString(day);
}

//处理时间
if(hour < 10)
{
hour_str=0+Integer.toString(hour);
}
else
{
hour_str=Integer.toString(hour);
}

date_string = year+month_str+day_str+hour_str;
return date_string;
}

/**
* 函数功能是根据当前的日期,当step为正数时,算出加上step后的日期;step为负数时,算出减去step后的日期
* @param step:要加或者减的天数
* @return :在当前日期的基础上加上或者减去step后的日期
*/
public static  String getDate(int step) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, step);
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");

String str = sf.format(cal.getTime());

System.out.print(str);
return str;
}

/**
*根据距离今天的日期差,得到是第几周周几:举例说今天是本年的第三周周四,那么getWeek(1)得到便是"第三周>周五"
* @param step
* @return
*/
public static String getWeek(int step)
{
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, step);

int week = cal.get(cal.WEEK_OF_YEAR);
int day = cal.get(cal.DAY_OF_WEEK);

if(day == 1)
{
week = week -1;
}
day = day-1;

String [] day_of_week = {"日","一","二","三","四","五","六","日"};

if(week == 0)
{
return "周"+day_of_week[day];
}

String str = "第"+week+"周"+">周"+day_of_week[day];
CommonUtils.LogWuwei(tag, "getWeek week is "+str+"day is "+day);
return str;
}

/**
* 根据距离今天的日期差,得到是周几:举例说今天是周二,那么getWeekDay(-1)得到的便是“周一”
* @param step
* @return
*/
public static String getWeekDay(int step)
{
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, step);

int week = cal.get(cal.WEEK_OF_YEAR);
int day = cal.get(cal.DAY_OF_WEEK);

if(day == 1)
{
week = week -1;
}
day = day-1;

String [] day_of_week = {"日","一","二","三","四","五","六","日"};

return "周"+day_of_week[day];

}

/**
* 获取当前日期是星期几<br>
*
* @param dt
* @return 当前日期是星期几
*/
public static String getWeekOfDate() {
Date date=new Date();
SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");
dateFm.format(date);

String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
CommonUtils.LogWuwei(tag,"今天是 "+weekDays[w]);
return weekDays[w];
}

/**
* 根据日期获取时间戳
* @param normalDate 20141228
* @return  1419696000
*/
public static long getTimeStamp(Long normalDate)
{
Long detail_date_tmp = normalDate;
String date_str = Long.toString(detail_date_tmp);
String year = date_str.substring(0, 4);
String month = date_str.substring(4, 6);
String day = date_str.substring(6, 8);
//CommonUtils.LogWuwei(tag,"detail_date_tmp is "+detail_date_tmp+" "+ year+":"+month+":"+day);

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date;
Calendar cal= Calendar.getInstance();
String parseStr = year+"-"+month+"-"+day;

try {
date = df.parse(parseStr);
cal = Calendar.getInstance();
cal.setTime(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

long timeStamp = cal.getTimeInMillis()/1000;

CommonUtils.LogWuwei(tag, "timeStamp is "+timeStamp);

return timeStamp;
}

/**
* 将”20141224” 解析成“2014年12月24日”
* @param date
* @return
*/
public static String parseDate(Long date)
{
int year = (int)(date/10000);
int month = (int)(date%10000)/100;
int day = (int)(date%10000)%100;
return year+"年"+month+"月"+day+"日";

}

/**
* 获取当前日期是星期几<br>
*
* @param dt
* @return 当前日期是星期几
*/
public static int getIntWeekOfDate() {
Date date=new Date();
SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");
dateFm.format(date);

int[] weekDays = {7,1,2,3,4,5,6};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
//   CommonUtils.LogWuwei(tag,"今天是 "+weekDays[w]);
return weekDays[w];
}

/**
* 根据今天是周几获取上周周一到周日的日期
*/
public static String[] getLastWeekDate()
{
int today = CommonUtils.getIntWeekOfDate();//获取今天周几
String baseDate = "";//初始化上周一的日期
String date[] = {null,null,null,null,null,null,null};
int index = 0;
switch (today)////得到上周一的日期
{
case 1:
baseDate = CommonUtils.getDate(-7);
index = -7;
break;
case 2:
baseDate = CommonUtils.getDate(-8);
index = -8;
break;
case 3:
baseDate = CommonUtils.getDate(-9);
index = -9;
break;
case 4:
baseDate = CommonUtils.getDate(-10);
index = -10;
break;
case 5:
baseDate = CommonUtils.getDate(-11);
index = -11;
break;
case 6:
baseDate = CommonUtils.getDate(-12);
index = -12;
break;
case 7:
baseDate = CommonUtils.getDate(-13);
index = -13;
break;
}

for(int i=0;i<7;i++)
{
date[i] = CommonUtils.getDate(index+i);
int k = i+1;
CommonUtils.LogWuwei(tag,"上周"+k+" is "+date[i]);
}
return date;
}

/**
* 根据本周周一到周日的日期
*/
public static String[] getThisWeekDate()
{
int today = CommonUtils.getIntWeekOfDate();//获取今天周几
String date[] = {null,null,null,null,null,null,null};
int index = 0;
switch (today)////得到上周一的日期
{
case 1:
index = 0;
break;
case 2:
index = -1;
break;
case 3:
index = -2;
break;
case 4:
index = -3;
break;
case 5:
index = -4;
break;
case 6:
index = -5;
break;
case 7:
index = -6;
break;
}

for(int i=0;i<7;i++)
{
date[i] = CommonUtils.getDate(index+i);
int k = i+1;
CommonUtils.LogWuwei(tag,"本周"+k+" is "+date[i]);
}
return date;
}

/**
* 获取下周周一到周日的日期
*/
public static String[] getNextWeekDate()
{
int today = CommonUtils.getIntWeekOfDate();//获取今天周几
String date[] = {null,null,null,null,null,null,null};
int index = 0;
switch (today)////得到下周的日期
{
case 1:
index = 7;
break;
case 2:
index = 6;
break;
case 3:
index = 5;
break;
case 4:
index = 4;
break;
case 5:
index = 3;
break;
case 6:
index = 2;
break;
case 7:
index = 1;
break;
}

for(int i=0;i<7;i++)
{
date[i] = CommonUtils.getDate(index+i);
int k = i+1;
CommonUtils.LogWuwei(tag,"下周"+k+" is "+date[i]);
}
return date;
}

/**
* 从今天起往前寻找8周内每个周一的日期
*/
public static long[] checkRecentEfficientDataFromToday()
{
long modayData[] = new long[8];
int today = getIntWeekOfDate();//获取今天是周几
int step = 0;
switch (today)
{
case 1:
step = 0;
break;
case 2:
step = -1;
break;
case 3:
step = -2;
break;
case 4:
step = -3;
break;
case 5:
step = -4;
break;
case 6:
step = -5;
break;
case 7:
step = -6;
break;
}

for(int i=0;i<8;i++)
{
modayData[i] = Long.parseLong(getDate(step-7*i));
CommonUtils.LogWuwei(tag, "monday date is "+modayData[i]);
}
return modayData;
}

/**
* 获取到本周一的日期
* @return
*/
public static long getThisMonday()
{
int today = getIntWeekOfDate();//获取今天是周几
long monday = (long)0;
int step = 0;
switch (today)
{
case 1:
step = 0;
break;
case 2:
step = -1;
break;
case 3:
step = -2;
break;
case 4:
step = -3;
break;
case 5:
step = -4;
break;
case 6:
step = -5;
break;
case 7:
step = -6;
break;
}
monday = Long.parseLong(getNowDateString())+step;
return monday;
}

/**
* 获取到上周的周一是几号
* @return
*/
public static long getLastMonday()
{
int today = getIntWeekOfDate();//获取今天是周几
long monday = (long)0;
int step = 0;
switch (today)
{
case 1:
step = 0;
break;
case 2:
step = -1;
break;
case 3:
step = -2;
break;
case 4:
step = -3;
break;
case 5:
step = -4;
break;
case 6:
step = -5;
break;
case 7:
step = -6;
break;
}
monday = Long.parseLong(getNowDateString())-7+step;
return monday;
}

/**
* 获取到下周的周一是几号
* @return
*/
public static long getNextMonday()
{
int today = getIntWeekOfDate();//获取今天是周几
long monday = (long)0;
int step = 0;
switch (today)
{
case 1:
step = 0;
break;
case 2:
step = -1;
break;
case 3:
step = -2;
break;
case 4:
step = -3;
break;
case 5:
step = -4;
break;
case 6:
step = -5;
break;
case 7:
step = -6;
break;
}
monday = Long.parseLong(getNowDateString())+7+step;
return monday;
}
View Code

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐