使用 C# 的系统运行时间不正确

System Up Time using C# is not correct

我有以下代码:

        private void button1_Click(object sender, EventArgs e)
        {
            DateTime dtime = DateTime.MinValue.Add(UpTime);
            string result = dtime.ToString(@"dd:hh\:mm\:ss");
            textBox1.Text = Convert.ToString(result);
        }

        public TimeSpan UpTime
        {
            get
            {
                using (var uptime = new PerformanceCounter("System", "System Up Time"))
                {
                    uptime.NextValue();       //Call this an extra time before reading its value
                    return TimeSpan.FromSeconds(uptime.NextValue());
                }
            }
        }
    }
}

我的问题是我的系统正常运行时间是 4 天 3 小时 22 分钟。

但申请显示还有 1 天。即 5 天 ...

我怎样才能使它正确?

DateTime.MinValue 值为 01/01/0001 00:00:00。所以加上这个值 4 天 3 小时 22 分钟,结果将是 05/01/0001 03:22:00.

并且由于您格式化了 那个 值, 正常得到 05 作为一天的一部分。

您可以 直接 将您的 UpTime 属性 格式化为 TimeSpan.

var f = new Form1();
textBox1.Text = f.UpTime.ToString(@"dd\.hh\:mm\:ss", CultureInfo.InvariantCulture);