gpt4 book ai didi

c# - 计算服务的正常运行时间/停机时间

转载 作者:行者123 更新时间:2023-11-30 15:26:08 24 4
gpt4 key购买 nike

我有一个自定义解决方案,每 1 小时检查一次网站是否在线。

结果是这样的:(每天有一个条目)

enter image description here

一天(每小时)有 24 个条目。每个小时都有一个可用性百分比(100%、95%、0% ... 等等)。

我的问题是:

  • 如何以百分比形式获取正常运行时间和停机时间?

  • 如何使用 2 个日期 DateTime 之间的这些值计算正常运行时间和停机时间,并以秒为单位获得结果?

正常运行时间很简单:

  • 所有值的总和除以 24(条目)即 99.67%

那么对于停机时间,我可以只做 100 - 99.67 = 0.33 % 吗?

我在获取 2 个日期之间的正常运行时间/停机时间(以秒为单位)时遇到了一些问题 DateTime

例如:如果范围日期是 20.04.2015 - 26.05.2015

我想我应该这样做:

对于每一天,如上所述计算正常运行时间(所有每日值的总和除以 24 个条目)并假设以下值:

  • 2015 年 4 月 20 日:96.67%
  • 2015 年 4 月 21 日:100.00%
  • 2015 年 4 月 22 日:92.00%
  • 2015 年 4 月 23 日: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?

最佳答案

如果您已经有了正常运行时间百分比,您所要做的就是非常简单的数学运算:

decimal PercentDownTime = 100 - PercentUpTime;
decimal SecondsUpTime = (time.Seconds / 100) * PercentUpTime;
decimal SecondsDownTime = (time.Seconds / 100) * PercentDownTime;

感谢Robert提醒我们 TotalSeconds TimeSpan 的属性,但在这种情况下,可以使用 Seconds属性(property)。

关于c# - 计算服务的正常运行时间/停机时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30023672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com