日期时间计算

时间:2013-03-11 15:16:43

标签: c# asp.net datetime

我一直在讨厌这个问题。我有两个日期时间变量。就业日期和终止日期。我需要获得工作天数。期限日期 - 就业日期。 我该怎么做呢?

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 个答案:

答案 0 :(得分:5)

好吧,您正在尝试处理DateTime值 - 因此您不应该使用int.Parse开头。使用DateTime.ParseExact。获得两个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;

答案 1 :(得分:3)

减去DateTime对象会产生TimeSpan。因此,使用TimeSpan.TotalDays获取两个日期之间的总天数:

int dWorked = (terminDate - empDate).TotalDays;

更新:对于LINQ to Enitites,使用EntityFunctions.DiffDays方法计算两个可空日期之间的天数:

from x in context.Foo
select EntityFunctions.DiffDays(x.FromDate, x.ToDate)

答案 2 :(得分:0)

按照

的方式尝试
var numDays = (terminDate - empDate ).TotalDays;
dworked = (int)Math.Round(numDays, MidpointRounding.AwayFromZero);

答案 3 :(得分:0)

您可以轻松地减去两个Datetimes来获取TimeSpan!

        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"