0

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

我认为数据库中的每个作业都有一个开始和结束日期。这样,当按下开始按钮时,当前日期时间将被保存,当按下停止按钮时,当前日期时间也会被记录下来。然后我可以减去这两个日期并得到完成作业所花费的时间。

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

我该怎么做?

谢谢

根据@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;
        }
    }
4

1 回答 1

1

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

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

您的网站只需要开始和停止按钮。我假设网站的用户有一种方法可以指示她或他当前正在从事的任务。

您可以根据您的报告需要总结一周、两周或一个月的时间段行。

于 2013-02-20T17:44:01.817 回答