我正在尝试创建一个网站,在那里我可以创建作业并记录每个作业所花费的时间。应该有一个开始,停止,暂停和继续按钮。
我想在数据库中为每个作业设置一个开始和结束日期。这样,当按下开始按钮时,将保存当前日期时间,并且当按下停止按钮时,也将记录当前日期时间。然后我可以减去两个日期并获得完成作业所需的时间。
但是如果想暂停作业并在以后继续作业会怎么样?减去开始和结束日期不会以这种方式返回分配所花费的实际时间。
我该怎么做?
由于
根据@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;
}
}
答案 0 :(得分:1)
您将创建一个单独的时间段表。
每个开始/停止时间戳都会有一行。
您的网站只需要启动和停止按钮。我假设网站用户有办法指出她或他当前正在进行的任务。
根据您的报告需求,您可以在一周,两周或一个月内总结时间段行。