0

Xの日付から今日の日付までに経過した「時間」の数を計算しようとしています。1日24時間あるので、これは簡単ですが、平日あたりの時間数を変えて計算する必要があります。

月曜日から金曜日の0600から2000、土曜日の0600から1800、日曜日の0900から1700までの時間を数えるだけです。また、クリスマスとボクシングデーを除く、バンクホリデー0900から1730まで。

たとえば、日付が2013年2月27日12:00:00の場合、平日はおよそ9日、土曜日は2日、日曜日は2日です。したがって、これにより、合計は次のようになります(日付が2013年12月3日12:00であると仮定):166時間(126 + 24 + 16)これは3.9「期間」に相当します

これは意味がありますか?

編集:私は実際に、上記の日付を取得し、上記の日付から何日、土曜日、日曜日、および銀行の休日があったかを計算し、次に上記の日数を掛けた時間を差し引くことによって、これを簡単に行うことができますか?

4

2 に答える 2

0

期間が何を意味するのかわかりませんが、時間が必要な場合は、次のようにする必要があります。

//NOTE: Adjust the order to match the rules priorities
float hoursOfDay(Date d) {
    if (isHoliday(d))
        return 8.5;
    elsif (isRegular(d))
        return 14;
    elsif (isSaturday(d))
        return ;
    elsif (isSunday(d))
    ...         
}

関数は日のタイプをチェックしているだけです (言語によると、これらの関数は既に存在しているはずです) isSaturday(d) = d.dayOftheWeek == DayOfTheWeek.SUNDAY

次に、それらを反復処理するだけです。

DateTime d1;
DateTime d2;
//NOTE: according to language, d2-d1 is a timespan object
float hours = 0;
for (Date d: d2-d1)
    hours+=hoursOfDay(d);

convertHoursToPeriods(hours);
于 2013-03-12T11:07:47.150 に答える
0

別の方法を使用してそれを理解しました。日付間の日数をカウントし、時間の差を掛けます

B2 は今日の日付で、C8 は開始日です。

平日

=SUM(INT((WEEKDAY(C8-{2,3,4,5,6})+$B$2-C8)/7))

土曜日

=SUM(INT((WEEKDAY(C8-7)+$B$2-C8)/7))

日曜日

=SUM(INT((WEEKDAY(C8-1)+$B$2-C8)/7))

これで、平日は 14 時間と計算できます。したがって、平日の数に14を掛けると、必要な数が得られます。他の日も繰り返します:)

于 2013-03-12T11:14:30.067 に答える