如何在时间注册应用程序中建模几个“暂停”

时间:2013-02-20 17:25:33

标签: database database-design

我正在尝试创建一个网站,在那里我可以创建作业并记录每个作业所花费的时间。应该有一个开始,停止,暂停和继续按钮。

我想在数据库中为每个作业设置一个开始和结束日期。这样,当按下开始按钮时,将保存当前日期时间,并且当按下停止按钮时,也将记录当前日期时间。然后我可以减去两个日期并获得完成作业所需的时间。

但是如果想暂停作业并在以后继续作业会怎么样?减去开始和结束日期不会以这种方式返回分配所花费的实际时间。

我该怎么做?

由于

根据@Gilbert Le Blanc的回答,我创建了一个小型C#应用程序来演示解决方案,如果有人需要这个:

class Program
    {
        static List<DateTime> datetimes;

        static void Main(string[] args)
        {

            // DateTime(Int32, Int32, Int32, Int32, Int32, Int32) 
            // Initializes a new instance of the DateTime structure to the specified year, month, day, hour, minute, and second.

            datetimes = new List<DateTime>();

            datetimes.Add(new DateTime(2013, 08, 18, 15, 15, 51));
            datetimes.Add(new DateTime(2013, 08, 19, 15, 15, 51));
            datetimes.Add(new DateTime(2013, 08, 20, 15, 15, 51));
            //datetimes.Add(new DateTime(2013, 08, 21, 15, 15, 51));

            double numberOfMinutes = CalculateTimeInMinutes(datetimes.OrderByDescending(x => x.Date).ToList());
            bool isRunning = IsOdd(datetimes.Count);

        }


        // Hvis der er et ulige antal rækker, kører opgaven stadig
        // Hvis der er et lige antal rækker, er opgaven pauset
        private static bool IsOdd(int value)
        {
            return value % 2 != 0;
        }

        private static double CalculateTimeInMinutes(List<DateTime> timelist) 
        {

            double numberOfMinutes = 0;

            for (int i = 0; i < timelist.Count; i++)
            {
                int nextDate = i + 1;

                if (nextDate <= timelist.Count - 1)
                {
                    TimeSpan ts = timelist[i] - timelist[nextDate];
                    Console.WriteLine(ts.TotalMinutes);
                    numberOfMinutes = numberOfMinutes + ts.TotalMinutes;
                }
            }

            return numberOfMinutes;
        }
    }

1 个答案:

答案 0 :(得分:1)

您将创建一个单独的时间段表。

每个开始/停止时间戳都会有一行。

您的网站只需要启动和停止按钮。我假设网站用户有办法指出她或他当前正在进行的任务。

根据您的报告需求,您可以在一周,两周或一个月内总结时间段行。