/**
* 获取某一时间段特定星期几的日期
* @author finder.zhou
*/
public class WeekDayUtil {
public static void main(String[] args) {
getDates("2013-04-01", "2014-04-14","星期一|星期二|星期日");
}
/**
* 获取某一时间段特定星期几的日期
* @param dateFrom 开始时间
* @param dateEnd 结束时间
* @param weekDays 星期
* @return 返回时间数组
*/
public static String[] getDates(String dateFrom, String dateEnd, String weekDays) {
long time = 1l;
long perDayMilSec = 24 * 60 * 60 * 1000;
List<String> dateList = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//需要查询的星期系数
String strWeekNumber = weekForNum(weekDays);
try {
dateFrom = sdf.format(sdf.parse(dateFrom).getTime() - perDayMilSec);
while (true) {
time = sdf.parse(dateFrom).getTime();
time = time + perDayMilSec;
Date date = new Date(time);
dateFrom = sdf.format(date);
if (dateFrom.compareTo(dateEnd) <= 0) {
//查询的某一时间的星期系数
Integer weekDay = dayForWeek(date);
//判断当期日期的星期系数是否是需要查询的
if (strWeekNumber.indexOf(weekDay.toString())!=-1) {
System.out.println(dateFrom);
dateList.add(dateFrom);
}
} else {
break;
}
}
} catch (ParseException e1) {
e1.printStackTrace();
}
String[] dateArray = new String[dateList.size()];
dateList.toArray(dateArray);
return dateArray;
}
//等到当期时间的周系数。星期日:1,星期一:2,星期二:3,星期三:4,星期四:5,星期五:6,星期六:7
public static Integer dayForWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DAY_OF_WEEK);
}
/**
* 得到对应星期的系数 星期日:1,星期一:2,星期二:3,星期三:4,星期四:5,星期五:6,星期六:7
* @param weekDays 星期格式 星期一|星期二
*/
public static String weekForNum(String weekDays){
//返回结果为组合的星期系数
String weekNumber = "";
//解析传入的星期
if(weekDays.indexOf("|")!=-1){//多个星期数
String []strWeeks = weekDays.split("\\|");
for(int i=0;i<strWeeks.length;i++){
weekNumber = weekNumber + "" + getWeekNum(strWeeks[i]).toString();
}
}else{//一个星期数
weekNumber = getWeekNum(weekDays).toString();
}
return weekNumber;
}
//将星期转换为对应的系数 星期日:1,星期一:2,星期二:3,星期三:4,星期四:5,星期五:6,星期六:7
public static Integer getWeekNum(String strWeek){
Integer number = 1;//默认为星期日
if("星期日".equals(strWeek)){
number = 1;
}else if("星期一".equals(strWeek)){
number = 2;
}else if("星期二".equals(strWeek)){
number = 3;
}else if("星期三".equals(strWeek)){
number = 4;
}else if("星期四".equals(strWeek)){
number = 5;
}else if("星期五".equals(strWeek)){
number = 6;
}else if("星期六".equals(strWeek)){
number = 7;
}else{
number = 1;
}
return number;
}
}
分享到:
相关推荐
获取某一时间段特定星期几的日期。如,查询2011-01-01到2011-02-02时间内所有星期一、星期三的对应日期。
java获取今天、昨天、近一周、近两周、近三周、近一月、近两月、近三月、近半年、本周、上周、本月、上月时间段
获取日期中的某数值。如获取月份 增加日期中某类型的某数值。如增加日期 获取精确的日期 判断字符串是否为日期字符串 获取日期字符串的日期风格。失敗返回null。 将日期字符串转化为日期。失败返回null。 ...
根据日期获取该日期星期几
java获取当前日期时间和本周的星期一的日期时间.docx
java 获取当前日期时间和本周的星期一的日期时间.docx
Java 实现当前日期的农历日期显示以及节气显示,完美实现24节气
java 获取指定日期(带毫秒)的 13位时间戳 ,获取当前时间的时间戳 一句话就可以System.currentTimeMillis();
java时间操作工具类,已封装好,包含获取某一时间的年,月,日,星期。以及对某一时间进行年,月,日,周的加减。还有获取某一时间年,月,日,周的起始和结束时间等等
java 编写的一个关于将公历某年某月某日换算成星期几的一个实例,只有源代码
java 使用Date类获取系统的当前时间 java 使用Date类获取系统的当前时间 java 使用Date类获取系统的当前时间
可以获取得到工作的MAP,并可以指定日期为工作日,将工作日设为非工作日. 之前提交的有问题
Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(new Date()); c.set(Calendar.DAY_OF_WEEK... //本周第一天,以星期日开始 。。。。。。。。。。。。。。。 //本月第一天
内容概要:日期时间转换工具类,包括基本的Date类型,String类型,TimeStamp类型,LocalDateTime类型,LocalDate类型之间的互相转换,还提供了许多与时间获取,时间计算有关的方法,如:获取指定日期几天后的日期;...
闰年,30天 31天 28天 29天 之分 所以 我谢了个方法 来拼日期输出的格式是 20130927 这样,查询的日期范围是45天内的 自己写了个类 分享给大家,可能有些逻辑有写笨拙,大家别喷,我写了一天半才 才这好这一段代码
java日期时间工具类超级全。其中包含:获得当前日期 yyyy-MM-dd HH:mm:ss;获取系统当前时间戳;获取当前日期 yy-MM-dd;得到两个时间差 格式yyyy-MM-dd HH:mm:ss;转化long值的日期为yyyy-MM-dd HH:mm:ss.SSS格式的...
主要介绍了Java实现获取某年某月第一天/最后一天的方法,涉及java日期运算相关操作技巧,需要的朋友可以参考下
JAVA时间工具类(计算法定工作日工时):计算某个日期加上几个工作日后的一个工作日期(除周末和法定节假日),计算某个日期后一天的工作日期(除周末和法定节假日),计算两个日期的真实工作日(除周末和法定节假日),...
网上排除节假日、周六周日 获取相差时间 分为四种情况, 精确到天 此工具类在此基础之上进行优化, 分为俩种情况, 精确到分钟,保留俩位小数 (精确到秒 需自己加工下) 入口方法: getWorkHours
采用单例模式计算并列出所有周和每一周所对应的时间段,并可获取当前日期、当期日期属于星期几、当前日期属于全年的第几个周(或可通过修改关键字获得当前日期属于当月的第几个周),内含有详细的注释。