计算日期和当前日期之间的差异

Calculate the difference between a date and the current date

我正在使用 C# 创建一个与 Microsoft Access 数据库交互的程序。我当前的任务是捕获 date/time 创建的条目并计算存储值与当前日期之间的差异并将其显示在单元格中。我不确定是用C#计算然后存入数据库,还是先存入数据库再用SQL进行计算。

我还需要跟踪一个单元在特定状态代码下分类的时间。我需要跟踪 date/time 状态代码已更改并计算状态代码更改日期与当前日期之间的天数差异。

例如...如果单元 xyz 的状态代码在 3 月 5 日更改并且当前日期是 3 月 8 日...我希望它显示它已处于不确定状态 3 天。

这样做的全部目的是确定生产过程中的瓶颈所在。

我正在使用 Visual Studio 2015 Professional 和 Microsoft Access 2010。数据库存储为 .mdb 文件。

如果这有点令人困惑,我很抱歉。我很乐意编辑我的问题,添加更多详细信息,and/or 提供说明以帮助回答这个问题。

编辑代码

 private void button1_Click(object sender, EventArgs e)
    {
        DateTime startDate = new DateTime();
        DateTime a = DateTime.Now;
        startTimeTextBox.Text = a.ToString();
    }

     private void button2_Click(object sender, EventArgs e)
    {
        DateTime b = DateTime.Now;
    }

这些是我尝试过的仅有的两位代码。我还尝试使用 Now() - StartDate 在 Access 中进行计算,但效果有限。

var seconds = DateTime.Now.Subtract(yourDateTimeObject).TotalSeconds;

给你秒差。希望这有帮助。您还可以获得其他内容的总数,例如 TotalMilliseconds.

此外,DateTime.Now 获取当前时间作为 DateTime 对象。您还可以通过执行 var seconds = oneDateTimeObject.Subtract(anotherDateTimeObject).TotalSeconds;.

之类的操作来比较两个 DateTime 对象

根据以下示例,可以通过几种不同的方式完成任务:

在 MS Office/Access VBA 中使用函数:

DateDiff ( interval, date1, date2, [firstdayofweek], [firstweekofyear])

例如(天数差异):

DateDiff("d",[StartDate],Now())

或秒差:

DateDiff("s",[StartDate],Now())

并使用 MS Access SQL 查询计算天数差异,如下所示(推荐):

SELECT StartDate, DateDiff("d",[StartDate],Now()) AS DiffDays FROM Table1;

注意:与你的计算样本有关,它也可以在 MS Access SQL 中编程如下(不推荐,因为在处理负值时可能会出错):

SELECT StartDate, Fix(Now()-[StartDate]) AS DiffDays2  FROM Table1;

它也可以根据成员@JaredPrice 给出的答案在 C# 中计算,或者使用 .NET/C# 中可用的类似 DateAndTime.DateDiff() 方法(回复:https://msdn.microsoft.com/en-us/library/ms127413(v=vs.110).aspx),例如:

long _diffDays = DateDiff(DateInterval.Day, StartDate, DateTime.Now);

希望这会有所帮助。