【发布时间】:2015-05-04 06:15:47
【问题描述】:
我有一个自定义解决方案,每 1 小时检查一次网站是否在线。
结果是这样的:(每天有一个条目)
一天(每小时)有 24 个条目。并且每个小时都有一个可用性百分比(100%、95%、0%……等等)。
我的问题是:
如何以百分比形式获得正常运行时间和停机时间?
如何使用两个日期
DateTime之间的这些值计算正常运行时间和停机时间并以秒为单位获得结果?
正常运行时间很容易:
- 所有值的总和除以 24(条目),即 99.67%
那么对于停机时间,我可以只做 100 - 99.67 = 0.33 % 吗?
我在获取两个日期之间的正常运行时间/停机时间(以秒为单位)时遇到了一些问题DateTime
例如:如果范围日期是 20.04.2015 - 26.05.2015
我想我应该这样做:
如上所述计算每天的正常运行时间(所有每日值的总和除以 24 个条目)并假设以下值:
- 20.04.2015:96.67%
- 21.04.2015:100.00%
- 22.04.2015:92.00%
- 23.04.2015:96.67%
- 2015 年 4 月 24 日:100.00%
- 25.04.2015:100.00%
- 2015 年 4 月 26 日:100.00%
现在上述值的总和除以天数(20.04 和 26.04 之间的 7 天),这使得 97.91 % 在 20.04 和 26.04 之间可用。
我假设在几秒钟内获得 97.91% 的正常运行时间我应该这样做:
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime first = DateTime.ParseExact("20.04.2015", "dd.MM.yyyy", provider);
DateTime last = DateTime.ParseExact("26.04.2015", "dd.MM.yyyy", provider);
TimeSpan time = last - first;
decimal secondsUptime = ((time.Days * 86400)/100) * 97.91m; //97.91 is the uptime calculated above for the time period.
// The problem is how to get this?
decimal secondsDowntime = ?
到目前为止我所做的,这是正确的方法吗?
如何获取 secondsDowntime?
【问题讨论】:
-
简单。制作一张 24 行的表格,每小时一个。然后获取每个值的小时,并在表格中输入一个值。百分比是表中的条目数除以 24。
-
我已经有表了,所有数据都保存好了。条目数除以 24?因此,如果我在上述日期之间有 7 个条目(每天一个条目)并将每 24 个条目除以 0.29,那么百分比是多少?
-
如果你已经知道如何计算正常运行时间百分比,那么使用
100-UpTimePrecent获取停机时间百分比有什么问题?计算的时间跨度与这部分计算无关。 -
你应该看看“TotalSeconds”,顺便说一句。
-
请记住,有些日子分别有 23 小时和 25 小时 - 夏季/冬季时间会发生变化。
标签: c#