私は現在のDateTime.Nowに追加された日数に基づいて日付が計算されるプロジェクトに取り組んでいます。私はこの仕事に基づいていくつかの機能を使用しています:business dates calculationこれは営業日の計算を必要とするため(週末や休日は計算されず、休日はアプリケーション設定ファイルにコード化されます)、カウントは現在の日付「今」、または開始日が週末の日または休日の場合は前の営業日です。 現在のクラスファイルは、を先にに移動してカウントを開始する翌営業日になります。開始日が今日の場合、カウントは明日から開始されます。日から営業日を計算する1つの方法C#
私の要件:たとえば、1月21日の開始日は土曜日です。 10日分の値が追加されます。結果の日付は 2月2日である必要があります。これは、計算を開始する営業日が1月20日金+ 9日以上= 10日であることを意味します。もう1つの例は、1月22日の日曜日に開始日を設定し、1月20日に戻って同じ結果を9日追加することです。週末または休日にカウントが開始されない場合は、カウントをスキップして次の計算された営業日に到着する必要があります。
問題は、私のプロジェクトが現在の日付に基づいて計算する必要があるか、またはカウント開始が週末または休日の場合は前の営業日に戻る必要があるという問題です。
私はクラスファイルは非常にはっきりしていると思いますが、現在の営業日にカウントを開始する方法を見つけたり、カウントの開始が週末や休日の場合は前の営業日に戻ったりします。
リンクのコードをご覧ください。私はいくつかの既存のメソッドでaddDaysパラメータに負の値を追加しようとしました。私のフォームでは、dayTimePickerの値を強制的に取り除こうとしましたが、クラスファイル全体でさまざまなさまざまなスラッシングが発生し、結果として失敗しました。
ご迷惑をおかけして申し訳ございません。ボタンのクリックイベントで
コード:
//DateTime.Today.AddDays(-4);
DateTime date = dateTimePicker1.Value;
// dateTimePicker1.Value.AddDays(-2);
XDateTime sDate = new XDateTime(dateTimePicker1.Value.ToShortDateString(), XDateTimeType.Business);
string Str = textBox2.Text.Trim();
string Str2 = textBox3.Text.Trim();
double Num;
bool isNum = double.TryParse(Str, out Num);
bool isNum2 = double.TryParse(Str2, out Num);
label6.Text = "";
//Test whether textBox contains a number or some other character. Fails if not a number.
if (isNum)
{
short days = Convert.ToInt16(textBox2.Text);
sDate.AddBusinessDays(days);
lblTodaysDate.Text = " Substantial Completion Date: " + sDate.Date.ToString("MMMM d, yyyy");
label3.Text = "";
if (isNum2)
{
short days2 = Convert.ToInt16(textBox3.Text);
sDate.AddBusinessDays(days2);
label6.Text = " Physical Completion Date: " + sDate.Date.ToString("MMMM d, yyyy");
label5.Text = "";
}
else
label5.Text = "Please enter numbers only!";
return;
}
else
label3.Text = "Please enter numbers only!";
return;
あなたの質問が少し簡潔になりますか?私は同様の問題を抱えていましたが、 'AddWorkDays(ByVal days as Integer、ByVal Holidays from List(DateTime)) 'という関数を作成しました。この方法で、私は関数にスキップしたい休暇を渡すことができます。あなたの設定と同じように見えます。それぞれの 'XDateTime'は独自の休日を格納しています。 – Origin
ここにあなたの問題を起こしている方法へのあなたの試みを示すいくつかのコードを投稿してください。 –
ボタンのクリックイベントを元の質問に追加しました。申し訳ありませんが、書式設定されたコードをコメントに配置する方法がわかりません。私は何が起こる必要があるのかは、日のピッカーからの翌営業日ではなく、翌営業日の日付であることを日が開始することです。ありがとう! – gary7