/**
* 生成工作日开始(周一)-结束(周五)日期对的方法
* 例如:
* 输入:参数start_time ="2011-05-04"(星期三),end_time="2011-07-14"(星期四)
* 返回:[
* ["2011-05-04","2011-05-06"],
* ["2011-05-09","2011-05-13"],
* ...,
* ["2011-07-4","2011-07-14"]
* ]
* 说明:返回的List中的第一个元素数组中,第1个值是开始日期,第2个值是开始日期后一个星期5
* List中的最后一个元素数组中,第1个值是结束日期前一个星期1,第2个值是结束日期
* List中间部分每一个元素数组中,第1个值是星期1,第2个值是星期5
* @param start_time
* @param end_time
* @return
*/
public List<String[]> getTimePairList(String start_time,String end_time){
List<String[]> list = new ArrayList<String[]>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date start_date = null;
Date end_date = null;
try {
start_date = sdf.parse(start_time);
end_date = sdf.parse(end_time);
int dayOfWeek1 = caculateWeekDays(start_date); //1->周日,2->周一
int dayOfWeek2 = caculateWeekDays(end_date);
int pre_days = 8 - dayOfWeek1; //i...saturday
int last_days = dayOfWeek2; //sunday...i
long diff_days = caculateDays(start_date,end_date);
int remain_weeks = (int)(diff_days+2-pre_days-(last_days+1))/7;
//计算第一个start、end对
addPair(list,start_date,null,pre_days-2);
//TODO添加
for(int i=0; i<remain_weeks; i++){
Date start_d = caculateDate(start_date, pre_days+i*7+1);
addPair(list,start_d,null,4);
}
//计算最后一个start、end对
addPair(list,null,end_date,-(last_days-2));
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
private void addPair(List<String[]> list, Date start_date, Date end_date, int days) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
String[] start_end_pair = new String[2];
if(start_date!=null && end_date==null){
c.setTime(start_date);
c.add(Calendar.DAY_OF_MONTH, days);
Date d = c.getTime();
start_end_pair[0] = sdf.format(start_date);
start_end_pair[1] = sdf.format(d);
}else if(start_date==null && end_date!=null){
c.setTime(end_date);
c.add(Calendar.DAY_OF_MONTH, days);
Date d = c.getTime();
start_end_pair[0] = sdf.format(d);
start_end_pair[1] = sdf.format(end_date);
}
list.add(start_end_pair);
}
public Date caculateDate(Date start_date, int days){
Calendar c = Calendar.getInstance();
c.setTime(start_date);
c.add(Calendar.DAY_OF_MONTH, days);
return c.getTime();
}
public int caculateWeekDays(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.DAY_OF_WEEK);
}
private int caculateDays(Date start_date, Date end_date){
return Math.round(end_date.getTime()/(1000*60*60*24)-start_date.getTime()/(1000*60*60*24));
}
- 大小: 22 KB
- 大小: 55.4 KB
分享到:
相关推荐
4. **时间区段**:支持自定义时间区段,例如工作日、休息日或特定时间段的特殊颜色标记。 5. **异步数据加载**:通过Ajax或JSON数据源,可以从服务器动态获取和更新日历事件,实现数据的实时同步。 6. **多语言...
例如,可以利用`setWorkDay`方法设置员工的出勤状态,或者通过`goYear`和`goMonth`方法快速切换查看不同时间段的日历。同时,配置对象允许开发者自定义节假日显示,使日历更加贴近实际需求。总之,`calendar日历控件...
其联级日历功能意味着用户可以一次性选择多个日期,比如选择一段连续的时间区间,或者选择多个不连续的日期,大大提高了用户操作的效率。 这个组件的核心功能包括: 1. **自定义样式**:wx_calendar支持开发者...
这里,我们利用`DayOfWeek`枚举来获取一周中的哪一天。如果是周六或周日,我们直接返回`false`,表示非工作日。其他日子则按照之前的工作时间规则进行判断。 此外,还可以添加对假期的支持,例如从数据库查询或配置...
《beehive.calendar.js v0.1:JavaScript实现的Google日历详解》 在现代Web开发中,交互式和...通过理解和掌握其工作原理和使用方法,开发者可以轻松地在项目中集成这一强大的日历功能,提升用户的在线日程管理体验。
Java时间函数在软件开发中扮演着重要角色...例如,你可以使用它们来计算两个日期之间的差值,或者根据特定规则调整日期,如工作日计算、假期判断等。通过这些函数,开发者可以轻松地处理复杂的时间逻辑,简化编程任务。
这段代码创建了一个只允许选择日期的JSpinner,格式为"年-月-日"。 3. **自定义JDialog**: 如果默认的组件不能满足需求,开发者可以选择创建一个自定义的JDialog来实现复杂的时间选择功能。这通常涉及使用多个...
3. **减少误解**:对于国际合作的团队,确保所有参与者都在清醒的工作时间内进行沟通,可以有效减少因时差带来的误解。 4. **个性化体验**:除了默认的白天时间显示,扩展可能还提供了自定义颜色、样式等功能,让...
`Date`类用于存储和操作日期,而`Calendar`类则提供了更灵活的日期操作,如获取或设置年、月、日、小时等字段。 在实现过程中,可能还需要用到Java的线程机制。线程使得程序能够同时执行多个任务,例如,在显示当前...
1. **多视图展示**:FullCalendar支持多种日历视图,如日视图、周视图、月视图、工作日视图等,用户可以根据需求自由切换,查看不同时间段的日程。 2. **事件管理**:你可以轻松添加、编辑和删除日历事件,这些事件...
每个工作日都分成了若干时间块,用户可以轻松添加、编辑或删除事件。 2. **日视图**:除了周视图外,插件还提供了日视图,让用户能够细化到每个小时的计划,这对于管理繁忙的日程特别有用。 3. **月视图**:在月...
Java的`Calendar.DAY_OF_WEEK`常量可以用于获取一周中的哪一天。 3. **用户输入处理**:用户需要输入年份、月份和日期,因此你需要学习如何使用`Scanner`类从控制台读取用户输入,并进行适当的验证以确保输入的合法...
1. **多视图支持**:FullCalendar提供多种视图模式,包括日视图、周视图、月视图以及工作日视图,让用户能够根据需求查看不同时间段的日程。3.4.0版本可能对这些视图进行了优化,以适应不同场景下的显示效果。 2. *...
在这个项目中,“react-calendar”是一个基于React的日历组件,可以用于创建自定义的日历视图,如月份视图、周视图或日视图,为用户提供直观的日程管理功能。 **Django后端集成** Django是用Python编写的一个强大...
【超强日历控件】是一种在网页开发中广泛使用的交互元素,它的主要功能是为用户提供一个直观、便捷的方式来选择日期或时间段。这类控件通常由JavaScript编写,可以在不刷新整个页面的情况下更新日期选择,提高了用户...
1. **多视图支持**:DayPilotPro支持日、周、月、年等多种视图,用户可以根据需要切换查看不同时间段的计划。 2. **事件管理**:可以创建、编辑和删除事件,并支持拖放操作,使得调整日程变得简单直观。 3. **资源...
4. **时间区段**:对于每个时间段,FullCalendar都可以清晰地展示,便于用户查看和安排时间。 5. **自定义样式**:开发者可以通过CSS样式表对日历的外观进行个性化定制,使其与网站设计风格保持一致。 6. **多语言...