日付からの稼働日数を計算する最も簡単な方法は何ですか? VB.NET が推奨されますが、C# も問題ありません。
また、「営業日」とは、土日を除くすべての日を意味します。アルゴリズムが、稼働日としてカウントされるべきではない特定の「除外」日付のリストも考慮できる場合、それはグレービーになります.
貢献してくれた天才に感謝します。
日付からの稼働日数を計算する最も簡単な方法は何ですか? VB.NET が推奨されますが、C# も問題ありません。
また、「営業日」とは、土日を除くすべての日を意味します。アルゴリズムが、稼働日としてカウントされるべきではない特定の「除外」日付のリストも考慮できる場合、それはグレービーになります.
貢献してくれた天才に感謝します。
これはあなたが望むことをします。VB.NETに変換するのは簡単なはずですが、私には長すぎて変換できませんでした。
DateTime start = DateTime.Now;
DateTime end = start.AddDays(9);
IEnumerable<DateTime> holidays = new DateTime[0];
// basic data
int days = (int)(end - start).TotalDays;
int weeks = days / 7;
// check for a weekend in a partial week from start.
if (7- (days % 7) <= (int)start.DayOfWeek)
days--;
if (7- (days % 7) <= (int)start.DayOfWeek)
days--;
// lose the weekends
days -= weeks * 2;
foreach (DateTime dt in holidays)
{
if (dt > start && dt < end)
days--;
}
最も簡単な方法は、おそらく次のようなものです
DateTime start = new DateTime(2008, 10, 3);
DateTime end = new DateTime(2008, 12, 31);
int workingDays = 0;
while( start < end ) {
if( start.DayOfWeek != DayOfWeek.Saturday
&& start.DayOfWeek != DayOfWeek.Sunday ) {
workingDays++;
}
start = start.AddDays(1);
}
最も効率的ではないかもしれませんが、休日のリストを簡単に確認できます。
これは、休日の減算なしのVBでのSteveの式のサンプルです。
Function CalcBusinessDays(ByVal DStart As Date, ByVal DEnd As Date) As Decimal
Dim Days As Decimal = DateDiff(DateInterval.Day, DStart, DEnd)
Dim Weeks As Integer = Days / 7
Dim BusinessDays As Decimal = Days - (Weeks * 2)
Return BusinessDays
Days = Nothing
Weeks = Nothing
BusinessDays = Nothing
End Function
DateDiffと他のいくつかの Date* 関数は、VB.NET に固有のものであり、多くの場合、C# 開発者の羨望の的となっています。ただし、この場合に非常に役立つかどうかはわかりません。
一般的に(コードなし) -
月曜日から月曜日になるように開始日と終了日をいじってから、差を足し戻します
[ノーコードの一般論で申し訳ありません、遅くなりました]
[cf endDate.Subtract(startDate).TotalDays]
SQL Server のメソッドを次に示します。ページには vbscript メソッドもあります。あなたが求めたものとは正確には違います。
2 つの CodeProject 記事を組み合わせて、完全なソリューションにたどり着きました。私たちのライブラリはソース コードとして投稿するには簡潔ではありませんが、必要なことを達成するために使用した 2 つのプロジェクトを紹介できます。CodeProject の記事と同様に、コメントを読んでください。重要な情報が含まれている可能性があります。
営業日の計算: http://www.codeproject.com/KB/cs/busdatescalculation.aspx
別の営業日計算: http://www.codeproject.com/KB/cs/datetimelib.aspx
休日の計算: http://www.codeproject.com/KB/dotnet/HolidayCalculator.aspx