1

私は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);       
    }
}
4

2 に答える 2

2

まず、 ではjava.util.Dateなく andを使用する必要がありますjava.sql.DateDate次に、関数に送信する前に s インスタンスを作成する必要がありますgetWorkingDaysBetweenTwoDatesgetWorkingDaysBetweenTwoDates3 番目に、関数の結果をローカル変数に格納してから使用する必要があります。を作成するために、オブジェクトDateを使用できます。SimpleDateFormat

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-02-23T00:00:28.507 に答える
0

以下のような参照を渡す必要があります。

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.Calendar

Date startDate = new Date();//current date in milliseconds
Calendar cal = Calendar.getInstance();
cal.setTime(startDate);
cal.set(Calendar.DATE, 1);
于 2013-02-22T23:54:50.340 に答える