C# 日期时间计算

C# 日期时间计算,c#,asp.net,datetime,C#,Asp.net,Datetime,我一直有一个恼人的问题。我有两个日期时间变量。雇佣日期和终止日期。我需要得到工作的天数。终止日期-雇佣日期。 我怎么才能得到这个 DateTime empDate = int.Parse((employeeEmploy.ElementAt(i).dateofEmpl).GetValueOrDefault().ToString("yyyyMMdd")); DateTime terminDate = int.Parse((employeeEmploy.ElementAt(i).terminDate

我一直有一个恼人的问题。我有两个日期时间变量。雇佣日期和终止日期。我需要得到工作的天数。终止日期-雇佣日期。 我怎么才能得到这个

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;

我试过了,但没用。

试着做一些类似的事情

var numDays = (terminDate - empDate ).TotalDays;
dworked = (int)Math.Round(numDays, MidpointRounding.AwayFromZero);

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

int dWorked = (terminDate - empDate).TotalDays;
更新:对于LINQ to Enitites,使用方法计算两个可空日期之间的天数:

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

嗯,您正在尝试处理
DateTime
值-因此不应该首先使用
int.Parse
。使用
DateTime.ParseExact
。获得两个
DateTime
值后,可以使用减法获得
TimeSpan
,然后从中计算总天数:

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

TimeSpan employmentDuration = terminationDate - employmentDate;
int days = (int) employmentDuration.TotalDays;
就我个人而言,我会用我的项目来完成所有这些,请注意:

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;

你可以很容易地减去这两个日期时间,从而得到一个时间跨度

        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"

“不起作用”是什么意思?您是否收到一个弹出窗口,上面写着“这不起作用!”?如果此人周末和节假日不工作,您可能希望检查工作日,而不是计算合同开始和终止之间的天数差。@C.Evenhuis yes。一个弹出窗口显示“这不起作用”。还有问题吗?@Dineshp啊,你一定是在暴躁的.NET平台上。没有其他问题。我使用linq来创建实体,我的数据类型可以为空。所以我有约会时间。有了它,Timespan将给出一个错误。有什么解决方法吗?您将如何处理这是数据类型值。。日期时间是。。。DateTime?我正在使用linq转换实体,它们可以有空值。所以我把它们声明为DateTime?日期和日期时间?终止日期。当我使用上面的代码时,我得到一个关于空值的错误。