0

2 つの日付の間の時間を見つけようとしています。1 つは現在の日 (今日) で、もう 1 つはユーザー定義の期限です。

私は C# Windows Forms を使用しており、ユーザーが締め切り日を選択できるように「日時ピッカー」を使用し、Today という文字列を作成して使用しました

string Today = System.DateTime.Today.ToString("dd-mm-yyyy");

現在の日付として。しかし、これら2つのポイント間の時間の長さを見つける方法がわかりません(文字列であるため)。私のプログラムは、タスクの期間が日と週である単純な「to doリスト」です(「yyyy」は単に審美的な目的で、必要に応じて取り外すことができます)。

私はインターネットを見てきましたが、文字列の代わりに「DateTime」を使用してこれを行う方法しか見つかりませんでした(または何か不足していますか?)。

どんな助けでも大歓迎です。

4

4 に答える 4

4

DateTimePicker の 'Value' プロパティを使用して DateTime 値を取得し、DateTime.Now を使用して現在の時刻 (ローカル タイムゾーン) の DateTime 値を取得します。

日付のみを減算する (時間コンポーネントを使用しない) 場合は、減算する前に両方の DateTime オブジェクトの Date プロパティにアクセスします。

 DateTime userDate = dateTimePicker.Value.Date;
 DateTime currentDate = DateTime.Now.Date;
 TimeSpan difference = userDate.Subtract(currentDate);  //assuming deadline is in the future
于 2012-04-28T18:22:27.963 に答える
3

2 つの文字列を使用しないでください。実際のDateTimeインスタンスを使用してください。文字列は日付を「理解」できません。そのため、DateTimeオブジェクトが存在します。

2 つの日付を互いに減算すると、TimeSpanインスタンスが得られます。これにより、時差の量が得られます。

TimeSpan difference = date1 - date2;
于 2012-04-28T18:20:37.347 に答える
1

私はあなたが探している次のものを推測します:

Date1.Subtract(Date2).TotalTime

次のリンクは、詳細を理解するのに役立ちます http://www.c-sharpcorner.com/UploadFile/DipalChoksi/DateDiff_CS_DC09132006172429PM/DateDiff_CS_DC.aspx

于 2012-04-28T18:23:49.147 に答える
0

AS Oded は、文字列は最善のアプローチではないと述べています。DateTimes を互いに減算して、タイム スパンを表すTimeSpanを得ることができます。

これは、物事を明確にする必要があるMSDNの例です。

DateTime departure = new DateTime(2010, 6, 12, 18, 32, 0);
DateTime arrival = new DateTime(2010, 6, 13, 22, 47, 0);
TimeSpan travelTime = arrival - departure;  
Console.WriteLine("{0} - {1} = {2}", arrival, departure, travelTime);      
// The example displays the following output:
//       6/13/2010 10:47:00 PM - 6/12/2010 6:32:00 PM = 1.04:15:00
于 2012-04-28T18:25:03.867 に答える