查找程序的正常运行时间,但以分钟为单位显示

本文关键字:分钟 为单位 显示 运行时间 程序 查找 | 更新日期: 2023-09-27 18:33:12

所以我运行某种类型的游戏,我想添加一个命令!uptime,显示自上次打开以来服务器运行了多长时间或其他什么

此代码(来自微软网站)显示刻度计数并正确显示

        int result = Environment.TickCount & Int32.MaxValue;
        player.SendMessage("Result: " + result);

但我希望能够以分钟为单位显示它已经启动了多长时间。

查找程序的正常运行时间,但以分钟为单位显示

从 MSDN 文档中,我们可以看到Environment.TickCount

获取自系统启动以来经过的毫秒数。

然后,您可以将其转换为分钟,如下所示:

var minutes = (Environment.TickCount - serverStartTickCount) / 60000; // 1000 ms/s * 60 s/m

或者,您可能需要考虑在服务器启动时存储DateTime.Now。假设你的类叫做Program,你可以把这个添加到其中:

public static readonly DateTime ServerStartTime = DateTime.Now;

然后在运行命令时执行此操作:

var uptime = DateTime.Now - Program.ServerStartTime;
var minutes = uptime.TotalMinutes;

正如@Carlos指出的那样,这将使您在Environment.TickCount每隔几周滚动一次时获得准确的正常运行时间。

从参考文档中:

一个 32 位有符号整数,包含以毫秒为单位的时间量 自上次启动计算机以来已经过去了。

所以除以 1000 得到秒,然后 60 得到分钟。

请注意,它只有 32 位,因此每隔几周循环一次。

使用TimeSpan .

TimeSpan uptime = TimeSpan.FromMilliseconds(Environment.TickCount);
double totalMinutes = uptime.TotalMinutes;