-2

厄介な問題が発生しています。私は2つの日時変数を持っています。雇用日および終了日。勤務日数を取得する必要があります。終了日 - 雇用日。これを手に入れるにはどうすればいいですか?

DateTime empDate = int.Parse((employeeEmploy.ElementAt(i).dateofEmpl).GetValueOrDefault().ToString("yyyyMMdd"));

DateTime terminDate = int.Parse((employeeEmploy.ElementAt(i).terminDate ).GetValueOrDefault().ToString("yyyyMMdd"));

int? dWorked = terminDate - empDate;

私はそれを試しましたが、うまくいきませんでした

4

4 に答える 4

5

さて、あなたはDateTime値を処理しようとしているので、最初から使用するべきではありませんint.Parse。を使用しDateTime.ParseExactます。2つのDateTime値を取得したら、減算を使用してを取得しTimeSpan、そこから合計日数を計算できます。

DateTime employmentDate = ...;
DateTime terminationDate = ...;

TimeSpan employmentDuration = terminationDate - employmentDate;
int days = (int) employmentDuration.TotalDays;

個人的には、実際にNoda Timeプロジェクトを使用して、これらすべてを実行します。

private static LocalDatePattern TextPattern = 
     LocalDatePattern.CreateWithInvariantInfo("yyyyMMdd");

...
LocalDate employmentDate = TextPattern.Parse(...).Value;
LocalDate terminationDate = TextPattern.Parse(...).Value;
int days = Period.Between(employmentDate, terminationDate, PeriodUnits.Days)
                 .Days;
于 2013-03-11T15:19:41.257 に答える
3

DateTimeオブジェクトを減算すると、 TimeSpanが生成されます。したがって、を使用TimeSpan.TotalDaysして、2つの日付間の合計日数を取得します。

int dWorked = (terminDate - empDate).TotalDays;

更新: LINQ to Enititesの場合、 EntityFunctions.DiffDaysメソッドを使用します。このメソッドは、2つのnull許容日の間の日数を計算します。

from x in context.Foo
select EntityFunctions.DiffDays(x.FromDate, x.ToDate)
于 2013-03-11T15:19:18.253 に答える
0

の線に沿って何かを試してみてください

var numDays = (terminDate - empDate ).TotalDays;
dworked = (int)Math.Round(numDays, MidpointRounding.AwayFromZero);
于 2013-03-11T15:19:16.153 に答える
0

TimeSpan を取得する 2 つの Datetimes を簡単に差し引くことができます。

        DateTime employmentDate = new DateTime(2013,03,8);
        DateTime terminationDate = new DateTime(2013,03,11);

        TimeSpan days = terminationDate - employmentDate;
        Console.WriteLine("Days: " + days.TotalDays); //Result: "Days: 3"
于 2013-03-11T15:26:12.697 に答える