您的位置:首页 > 其它

指定月份获取每周开始和截止时间,不足一周下个月的补足一周,以周六为标准

2017-07-31 16:43 736 查看
package com.deta.demo;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

/**

* 指定月份获取每周开始和截止时间,不足一周下个月的补足一周,以周六为标准

* @author Administrator

*

*/

public class a {

private static int year = 2017;// 年

private static int month = 8;// 月

private static int day = 1;// 日 月第一天

private static int startmDay = 1;//

private static int mDay = 0;// 月第一天相应的星期几转成整数

private static int weekDay = 7;// 一周几天

private static String startWeek;// 每周的开始的星期

private static int change = 1;// //【特别说明:例子是以周六为基础;周六前就减去1(五),2(四),3(三),4(二),5(一),周日后就加1】

public static void main(String[] args) {
/**
* 系统时间当月天数
*/
int currentMaxmDays = getCurrentMonthmDay();
System.out.println("系统时间当月天数:" + currentMaxmDays);
/**
* 获取指定月数的天数
*/
int maxmDaysByDate = getmDaysByYearMonth(year, month);
System.out.println(year + "年" + month + "月天数:" + maxmDaysByDate);
/**
* 获取指定月数第一天是周几
*/
String week_01 = getmDayOfWeekByDate(year + "-" + month + "-" + day);
System.out.println(year + "-" + month + "-01是:" + week_01);
System.out.println(week_01 + "的数字标识是:" + getDay(week_01));
/**
* 获取指定月数最后一天是周几
*/
String week = getmDayOfWeekByDate(year + "-" + month + "-"
+ maxmDaysByDate);
System.out.println(year + "-" + month + "-" + maxmDaysByDate + "是:"
+ week);
/**
* 本月第一周第一天的计算开始星期
*/
startWeek = getWeek(weekDay - (startmDay % weekDay) - change);
System.out.println(month + "月第一周第一天是:" + startWeek);

/**
* 本月第一周第一天的日期
*
*/
int a = getDay(startWeek) - getDay(week_01);
a = a + day;
System.out
.println(month + "月第一周第一天的日期:" + year + "-" + month + "-" + a);

/**
* 开始计算有几周,
*/
int b = maxmDaysByDate - a;
int c = b / weekDay;
int d = b % weekDay;
/**
* 打印每周的起止时间
*/
if (d != 0) {
c = c + 1;
System.out.println(month + "月有" + c + "周,余" + d + "天");
}
for (int i = 1; i <= c; i++) {
String title = month + "月第" + i + "周开始和截止日期:";
if (i == 1) {
System.out.println(title + year + "-" + month + "-" + a + ";"
+ year + "-" + month + "-" + (a + weekDay * i - 1));
} else if (i == c) {
String startMouth = year + "-" + month + "-"
+ (a + weekDay * (i - 1));
int endDay = (a + weekDay * i - 1);
if (endDay > maxmDaysByDate) {
month = month + 1;
endDay = endDay - maxmDaysByDate;
if (month > 12) {
year = year + 1;
month = 1;
}
}
String endMouth = +year + "-" + month + "-" + endDay;

System.out.println(title + startMouth + ";" + endMouth);
} else {
System.out.println(title + year + "-" + month + "-"
+ (a + weekDay * (i - 1)) + ";" + year + "-" + month
+ "-" + (a + weekDay * i - 1));
}
}
}

/**
* 跟均星期几获取当前值mDay的值
*/
public static int getDay(String week) {
if (week.equals("星期一")) {
mDay = 1;
} else if (week.equals("星期二")) {
mDay = 2;
} else if (week.equals("星期三")) {
mDay = 3;
} else if (week.equals("星期四")) {
mDay = 4;
} else if (week.equals("星期五")) {
mDay = 5;
} else if (week.equals("星期六")) {
mDay = 6;
} else if (week.equals("星期日")) {
mDay = 7;
}

return mDay;
}

/**
* 根据startmDay的值获取星期几
*/
public static String getWeek(int mDay) {
System.out.println(mDay);
switch (mDay) {
case 1:
startWeek = "星期一";
break;
case 2:
startWeek = "星期二";
break;
case 3:
startWeek = "星期三";
break;
case 4:
startWeek = "星期四";
break;
case 5:
startWeek = "星期五";
break;
case 6:
startWeek = "星期六";
break;
case 7:
startWeek = "星期日";
break;
default:
break;
}

return startWeek;
}

/**
* 获取当月的 天数
* */
public static int getCurrentMonthmDay() {

Calendar a = Calendar.getInstance();
a.set(Calendar.DATE, 1);
a.roll(Calendar.DATE, -1);
int maxDate = a.get(Calendar.DATE);
return maxDate;
}

/**
* 根据年 月 获取对应的月份 天数
* */
public static int getmDaysByYearMonth(int year, int month) {
Calendar a = Calendar.getInstance();
a.set(Calendar.YEAR, year);
a.set(Calendar.MONTH, month - 1);
a.set(Calendar.DATE, 1);
a.roll(Calendar.DATE, -1);
int maxDate = a.get(Calendar.DATE);
return maxDate;
}

/**
* 根据日期 找到对应日期的 星期
*/
public static String getmDayOfWeekByDate(String date) {
String mDayOfweek = "-1";
try {
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = myFormatter.parse(date);
SimpleDateFormat formatter = new SimpleDateFormat("E");
String str = formatter.format(myDate);
mDayOfweek = str;

} catch (Exception e) {
System.out.println("错误!");
}
return mDayOfweek;
}


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