导航:首页 > 编程语言 > java计算工作日

java计算工作日

发布时间:2022-06-10 13:05:17

java如何计算工作日之间的时间差

❷ java 计算 2个日期间隔多少个工作日

importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;

publicclassTest{

publicstaticvoidmain(String[]args)throwsException{
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
DatebegDate=sdf.parse("2014-01-04");
DateendDate=sdf.parse("2014-01-04");
if(begDate.after(endDate))
thrownewException("日期范围非法");
//总天数
intdays=(int)((endDate.getTime()-begDate.getTime())/(24*60*60*1000))+1;
//总周数,
intweeks=days/7;
intrs=0;
//整数周
if(days%7==0){
rs=days-2*weeks;
}
else{
CalendarbegCalendar=Calendar.getInstance();
CalendarendCalendar=Calendar.getInstance();
begCalendar.setTime(begDate);
endCalendar.setTime(endDate);
//周日为1,周六为7
intbeg=begCalendar.get(Calendar.DAY_OF_WEEK);
intend=endCalendar.get(Calendar.DAY_OF_WEEK);
if(beg>end){
rs=days-2*(weeks+1);
}elseif(beg<end){
if(end==7){
rs=days-2*weeks-1;
}else{
rs=days-2*weeks;
}
}else{
if(beg==1||beg==7){
rs=days-2*weeks-1;
}else{
rs=days-2*weeks;
}
}
}
System.out.println(sdf.format(begDate)+"到"+sdf.format(endDate)+"中间有"+rs+"个工作日");
}
}

如果只算双休的话

❸ java根据年月获取对应的月份工作日天数

importjava.util.Calendar;

publicclassMain{

publicstaticvoidmain(String[]args){

System.out.println(countWorkDay(2018,6));
}

/**
*获取指定年月有多少个工作日)
*
*@paramyear
*@parammonth
*@return
*/
publicstaticintcountWorkDay(intyear,intmonth){
Calendarc=Calendar.getInstance();
c.set(Calendar.YEAR,year);
//月份是从0开始计算,所以需要减1
c.set(Calendar.MONTH,month-1);

//当月最后一天的日期
intmax=c.getActualMaximum(Calendar.DAY_OF_MONTH);
//开始日期为1号
intstart=1;
//计数
intcount=0;
while(start<=max){
c.set(Calendar.DAY_OF_MONTH,start);
if(isWorkDay(c)){
count++;
}
start++;
}
returncount;
}

//判断是否工作日(未排除法定节假日,由于涉及到农历节日,处理很麻烦)
publicstaticbooleanisWorkDay(Calendarc){
//获取星期,1~7,其中1代表星期日,2代表星期一...7代表星期六
intweek=c.get(Calendar.DAY_OF_WEEK);
//不是周六和周日的都认为是工作日
returnweek!=Calendar.SUNDAY&&week!=Calendar.SATURDAY;
}
}

❹ Java计算工作日和法定节日的一个需求,怎样设计 求救

我的思路:
给用户一个界面定义节日(holiday,需要每年定义)和调休工作日(是指原本应该休息的周末因为假日连休而调整为工作日),然后存入数据库。
在计算某日期date是否为假日的时候,按下面的伪代码判断:
//循环数据库取出的假日List
if (date=假日List.get(i)){
// 是假日
return 假日;
}
//循环数据库取出的调休工作日List
if(date=调休工作日List.get(i)){
// 是工作日
return 工作日;
}

if(date 是否为 周末假日){
// 是假日
return 假日;
}else{
// 是工作日
return 工作日;
}

❺ Java编写 求某天之后的多少个工作日是哪天

我从自己的工具类中使用了几个方法,一并贴出来供楼主参考:
/**
* 判断当前日期为星期几
* @param date
* @return
*/
public static int dayOfWeek(Date date){
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(date);
int weekDay = aCalendar.get(Calendar.DAY_OF_WEEK);
return weekDay;
}
/**
* 获取指定日期指定天数后的日期
* @param date 指定日期
* @param index 指定天数
* @param flag 是否将时分秒归0
* @return
*/
public static Date getNextDate(Date date, int index, boolean flag){
Calendar cal = Calendar.getInstance();
cal.setTime(date);// 获得当前时间
if(flag){
// 日期不变,把时间设定为00:00:00
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 00);
cal.set(Calendar.SECOND, 00);
}
cal.set(Calendar.DATE, cal.get(Calendar.DATE) + index);
return cal.getTime();
}

public static Date getDate(Date currentDate,int days){
/*
* 1,根据传入日期获取下一天日期
* 2,判断下一天日期是否为工作日,如果是则设置下一次循环日期为此日期
* 如果不为工作日,为周6,日期前进2天,为周天前进1天
* 3, 获取指定天数后的工作日
*/
Date date = currentDate;
/* 设置循环次数
* 如果含最后一天则循环 days + 1 天,不需要含最后一天,则循环 days次
* */
for(int i = 0; i < days + 1; i++){

Date nextDate = getNextDate(date,1,false); //获取下一天的日期
int weekDay = dayOfWeek(nextDate); //下一天日期为星期几
if(weekDay == 1){ //为星期六
date = getNextDate(date,2,false);
}else if(weekDay == 6){ //为星期天
date = getNextDate(date,3,false);
}else{
date = nextDate;
}
}
return date;
}

虽然这个满足楼主的需求,但是肯定有更简单的算法,现在要出门,来不及想了,先用用。

这个问题的思路我现在想到的就是判断下一日期是否为工作日,为周6怎样处理,为周日怎样处理。希望回来的时候能看到更好的计算方法(good luck)。

楼主应该建立自己的常用工具类库,如日期,图片,字符串等等的常用处理(注意方法的复用),这样开发的效率会很高。

❻ java 获取一个月有多少个工作日

import java.util.Calendar;
import java.util.Scanner;

public class WorkingDAy {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);
System.out.print("Please input the date(yyyy-MM): ");

String input = scanner.nextLine();

if(!input.matches("\\d{4}-\\d{2}")){
System.out.println("Error input in format, exit!");
System.exit(0);
}

int count = 0;

int month = Integer.parseInt(input.substring(5, 7));
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, Integer.parseInt(input.substring(0, 4)));
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DATE, 1);

while(cal.get(Calendar.MONTH) < month){
int day = cal.get(Calendar.DAY_OF_WEEK);

if(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){
count++;
}

cal.add(Calendar.DATE, 1);
}

System.out.println(count);
}

}

看例子

❼ 有关java中工作日算法的问题

Calendar c = new GregorianCalendar();
int i=0;
while(i<3){
c.add(Calendar.DATE, 1);
if (isHoliday(c.getTime())) continue;
if (isWeekEnd(c.getTime()) && !isTransferAsWorkDay(c.getTime())) continue;

i++;
}
return c.getTime();
isHoliday() :是否为节假日
isWeekEnd()是否为周末
isTransferAsWorkDay()是否周末转为工作日
这3个需要自己写

❽ 求java实现工作日方法

import java.text.DateFormat;

import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Test9 {

/**
* 第9题:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
*
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {

Scanner scan = new Scanner(System.in);
System.out.println("请输入日期(格式为yyyy-mm-dd):");
String input = scan.next();
DateFormat format = DateFormat.getDateInstance();
Date date = format.parse(input);
Calendar ca = Calendar.getInstance();
ca.setTime(date); //设置输入时间
int xingqi = ca.get(Calendar.DAY_OF_WEEK);//获得输入日期是星期几?
System.out.println("您输入的日期是:"+input);
System.out.println("这一天是"+ GetWeek(xingqi));
System.out.println("这一天是这年的第"+ ca.get(Calendar.DAY_OF_YEAR)+"天");

}
public static String GetWeek(int i)
{
if(i<0||i>7){
System.out.println(i+"没有对应的星期");
}
String[] weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
return weeks[i];

}

}

❾ java 获取一周内工作日的天数

日期可以使用Calendar,法定假期只能自己预先在程序里面定义好。

参考代码:http://blog.csdn.net/u011789653/article/details/41444023

阅读全文

与java计算工作日相关的资料

热点内容
元神的服务器怎么看 浏览:362
stc8单片机串口中断 浏览:954
信号分析pdf 浏览:927
暴力删除命令 浏览:803
qt如何编译加快速度 浏览:903
php添加数据sql语句 浏览:717
免费的小说app有什么 浏览:405
螺杆压缩机进气阀动画 浏览:651
两台服务器如何做负载均衡 浏览:227
程序员的工资是涨的吗 浏览:813
视频存储服务器可以干什么 浏览:463
创建文件夹安装失败怎么回事 浏览:832
程序员高考隔了几年 浏览:822
云服务器是哪一层 浏览:22
jit编译器的jit什么意思 浏览:330
我想清理手机中空白文件夹 浏览:976
电脑e盘文件夹删不掉怎么办 浏览:607
外圆凹圆弧编程 浏览:462
html5编程题 浏览:840
干燥机制冷压缩机一开就跳动 浏览:389