Java 在main()中调用int函数以显示当前工作日

Java 在main()中调用int函数以显示当前工作日,java,function,calendar,Java,Function,Calendar,我对java非常陌生,发现下面的代码可以获取不包括周六和周日的工作日数 我需要知道如何在main()中调用此函数以显示当月的workDays 谢谢 package mypkg; import java.sql.Date; import java.util.Calendar; public class workrays { public static int getWorkingDaysBetweenTwoDates(Date startDate, Date endDate) {

我对java非常陌生,发现下面的代码可以获取不包括周六和周日的工作日数

我需要知道如何在
main()
中调用此函数以显示当月的
workDays

谢谢

package mypkg;

import java.sql.Date;
import java.util.Calendar;

public class workrays {

    public static int getWorkingDaysBetweenTwoDates(Date startDate, Date endDate) {
        Calendar startCal;
        Calendar endCal;
        startCal = Calendar.getInstance();
        startCal.setTime(startDate);
        endCal = Calendar.getInstance();
        endCal.setTime(endDate);
        int workDays = 0;

        //Return 0 if start and end are the same
        if (startCal.getTimeInMillis() == endCal.getTimeInMillis()) {
            return 0;
        }

        if (startCal.getTimeInMillis() > endCal.getTimeInMillis()) {
            startCal.setTime(endDate);
            endCal.setTime(startDate);
        }

        do {
            startCal.add(Calendar.DAY_OF_MONTH, 1);
            if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY
            && startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
                ++workDays;
            }
        } while (startCal.getTimeInMillis() < endCal.getTimeInMillis());

        return workDays;
    }

    public static void main(String args[]) {

        getWorkingDaysBetweenTwoDates(Date startDate, Date endDate);
        System.out.println(workdays);       
    }
}
包mypkg;
导入java.sql.Date;
导入java.util.Calendar;
公共类工作射线{
两个日期之间的公共静态int GetWorkingDays(日期开始日期、日期结束日期){
日历标准;
日历endCal;
startCal=Calendar.getInstance();
startCal.setTime(startDate);
endCal=Calendar.getInstance();
endCal.设置时间(endDate);
国际工作日=0;
//如果开始和结束相同,则返回0
if(startCal.getTimeInMillis()==endCal.getTimeInMillis()){
返回0;
}
if(startCal.getTimeInMillis()>endCal.getTimeInMillis()){
startCal.setTime(结束日期);
端校准设定时间(起始日期);
}
做{
startCal.add(日历日/月,1);
if(startCal.get(Calendar.DAY/周)!=Calendar.SATURDAY
&&startCal.get(日历。星期几)!=日历。星期日){
++工作日;
}
}while(startCal.getTimeInMillis()
您需要通过如下参考:

Date startDate = new Date();
Date endDate = new Date();
getWorkingDaysBetweenTwoDates(startDate, endDate);
或一个班轮:

getWorkingDaysBetweenTwoDates(new Date(), new Date());
当然,您必须在创建开始日期和结束日期时提供它们的值,通常使用
java.util.Calendar
。您也可以使用Date方法来实现它,但它们已被弃用

编辑:

这就是如何使用中的方法操纵
java.util.Date


首先,应该使用
java.util.Date
,而不是
java.sql.Date
。其次,您需要先创建
Date
s实例,然后再将其发送到
getworkingdaysbetween twodates
函数。第三,您需要将
getworkingdaysbetween twodates
函数的结果存储在局部变量中,然后使用它。要创建
日期
s,可以使用
SimpleDataFormat
对象:

public static void main(String[] args) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    try {
        Date startDate = sdf.parse("2013-02-20");
        Date endDate = sdf.parse("2013-02-22");
        int workdays = getWorkingDaysBetweenTwoDates(startDate, endDate);
        System.out.println(workdays);
    } catch (Exception e) {
        System.out.println("There's an error somewhere. Check the stacktrace to find it");
        e.printStackTrace(System.out);
    }
}

根据您的评论,您可以创建另一个函数,通过发送
Date
,返回值为第一个日期的
Date
实例:

public static Date getFirstDateOfMonth(Date aDate) {
    Calendar c = Calendar.getInstance();
    c.setTime(aDate);
    c.set(Calendar.DATE, 1);
    return c.getTime();
}
你可以这样称呼它:

public static void main(String[] args) {
   Date endDate = new Date(); //current date/time
   Date startDate = getFirstDateOfMonth(endDate);
   int workdays = getWorkingDaysBetweenTwoDates(startDate, endDate);
   System.out.println(workdays);
}

当处理日期计算表示为“代码>日期<代码>或<代码>日历> /代码>时,考虑如果一天内的值(实际上是毫秒精密时间戳)不是同一时间,那么重要的是要考虑什么。这是非常重要的,如果你不想得到任何令人惊讶的答案,你必须精确地定义它。在您的情况下,开始日期(例如2013年2月22日08:00)和结束日期(例如2013年2月22日17:00)返回零,但可以认为结果应为1。我想将开始日期设置为当月1日,结束日期设置为今天。。是否可以主要显示当前工作的工作日month@user2058260如果此答案解决了您的问题(或者更好地引导您找到解决方案),请使用Calendar类中的方法设置日期。:)是否可以从新日期提取月/年();所以我可以把startDate=(year+“-”+month+“1),这样每次它都会选择当前monthcal.set(Calendar.Date,1)中的第一个;这行中的错误:Date无法解析或不是字段它应该是cal.set(Calendar.Date,1)。请参考我在答案中包含的Calendar的API…)谢谢您得到了想要的结果:)
public static void main(String[] args) {
   Date endDate = new Date(); //current date/time
   Date startDate = getFirstDateOfMonth(endDate);
   int workdays = getWorkingDaysBetweenTwoDates(startDate, endDate);
   System.out.println(workdays);
}