C# ASP.NET MVC应用中每个用户的秒表计时问题

4
我有一组用户在我的asp.net mvc应用程序中。当任何用户开始计时器后,我需要计时器继续运行,即使用户退出登录,并一直运行,直到他再次登录并单击停止。我可以在开始按钮单击时启动它。
        stopWatch = new Stopwatch();
        stopWatch.Start();

但是我如何将其与用户关联,以便在用户注销后再次登录时,他将看到包括他未在应用中活动的时间的经过时间?

所以,在用户登录并点击秒表后,他应该获得包括整个时间在内的经过时间。

TimeSpan ts = stopWatch.Elapsed;

使用Angular指令/ JavaScript计时器是否更好?


您可以保存用户注销的日期和时间,然后通过简单的数学计算,在他登录后获取整个时间。 - Iman Nemati
那是一个不错的选择。谢谢。 - kakon
1个回答

1

为什么要使用Stopwatch来做这样的事情呢? Stopwatch旨在提供高分辨率的时间测量,我怀疑您的用户不需要知道准确的时间到几纳秒...
来自MSDN:

提供一组方法和属性,可用于准确地测量经过的时间。

只需保存DateTime.Now()、按钮状态(即开始、停止)和用户ID,然后当具有相同ID的用户再次按下该按钮时,只需计算时间差即可。

TimeSpan elapsedTime = FirstClickDateTime - SecondClickDateTime;

你所需做的就是格式化 TimeSpan 对象的显示。


实际上,我计划持续向用户显示经过的时间。如果按照您所说的方式操作,那么当用户点击停止时,我可以向他显示经过的时间,但是如何持续显示经过的时间呢? - kakon
你是想启动一个计时器吗? - Zohar Peled
在客户端启动一个计时器,已经流逝了一些时间,并继续计时。 - kakon
我明白了。这肯定要在客户端上完成。但是自从我学习JavaScript以来已经很长时间了,所以我不太确定如何在js中编写这样的代码。不过,我相信你可以找到一些内置计时器,可以从非零值开始计时(也许在jQuery中)。如果没有,那就自己编写一个。这应该不难。 - Zohar Peled
我认为我已经得到了答案。在客户端使用AngularJS计时器,我可以向用户显示经过的时间,在服务器端我可以按照您的答案来实现。 - kakon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接