使用 C# 从浏览器历史记录中获取在每个网站上花费的时间

Get time spent on each website from browser history using C#

我已经使用 Winforms C#.Net 编写了代码来获取用户在其计算机上访问过的网站的浏览器历史记录

但是,我还需要获取他在每个网站上花费的时间,例如,输出应该是:

John, www.whosebug.com , 20 minutes.

使用 SQLIte 连接读取历史文件并填充数据table。 使用此 link 中的方法 - https://social.msdn.microsoft.com/Forums/vstudio/en-US/3e9f3588-ad0b-49af-b269-2abfda0b9abc/how-to-get-the-browser-history-in-program-using-c?forum=csharpgeneral

但是 table 'Visits' 的 'Visit_duration' 栏没有提供在每个网站上花费的时间。请参阅附加屏幕截图中的红色圆圈。

请告知我是否使用了正确的列。如果是,我将如何转换此列以获得以小时或分钟为单位的准确时间

编辑:

虽然@imsmn 的回复很好,但我还需要一个 "Visit_duration" 的总和。请注意,Table 2(访问)的“URL”列与 Table 1(网址)的“ID”列匹配。所以,我希望 Table 2 “Visit_duration” 的总和在 Table 2 “URL” 上分组。匹配的 'Where 子句是 table1["ID") = table2["URL") 。请帮助

last_visit_timevisit_time(实际上所有时间戳)自 1601-01-01 以来以 微秒存储。似乎这是 WebKit 时间戳的默认格式(chrome 以前使用的 webkit)。

这意味着,您所要做的就是将给定的微秒添加到基准日期。

DateTime baseDate = new DateTime(1601, 01, 01);
DateTime lastVisitDate = baseDate.AddSeconds(13268117172386444 / 1000000); // Convert to seconds by dividing with 1.000.000

对于该示例,结果将是 14.06.2021 04:06:12

计算持续时间同样简单 - 添加微秒并减去基准日期。

TimeSpan duration = baseDate.AddSeconds(811945003 / 1000000).Subtract(baseDate);

在这种情况下,用户在网站上花费了 00:13:31