我已经尝试编写应用程序它运行了多长时间而且有点难以让我在这里寻求建议,在我的文件'profgram.cs'中我有一个公共日期时间女巫显示正常运行时间(我认为)< / p>
public static DateTime TimeStarted
{
get
{
return DateTime.Now;
}
}
当程序加载时我有这段代码来设置时间
TimeSpan span = (TimeSpan)(DateTime.Now - TimeStarted);
Output.WriteLine("The server has initialized successfully (" + span.TotalSeconds + " seconds). Ready for connections.", OutputLevel.Notification);
然后实际显示正常运行时间我有一个显示时间跨度的案例
case "uptime":
{
TimeSpan span = (TimeSpan)(DateTime.Now - Program.TimeStarted);
Session.SendData(UserAlertModernComposer.Compose("Stats", "Uptime: " + span.TotalMinutes + " minutes"));
return true;
}
但问题是它总是说0分钟?我也尝试过.Minutes not .Totalminutes,它仍然这样做
答案 0 :(得分:3)
您总是将当前时间作为开始时间返回。
更改TimeStarted
以便您可以设置该值,然后在程序启动时进行设置。
public static DateTime TimeStarted { get; set; }
public static void Main(string[] args)
{
//set start time
Program.TimeStarted = DateTime.UtcNow;
}
您可以将当前进程用于当前进程,而不是维持自己的开始时间:
DateTime processStartedAt = System.Diagnostics.Process.GetCurrentProcess().StartTime;
要获取自程序启动以来的总秒数,您可以使用TotalSeconds
的{{1}}属性。
TimeSpan
如果要创建要显示的消息,请使用TimeSpan sinceStarted = (DateTime.UtcNow - Program.TimeStarted);
double secondsRunning = sinceStarted.TotalSeconds;
结构上的属性:
TimeSpan
如果要定期更新控制台标题,可以使用计时器。请注意,您应该将它放在主类中,以便计时器不会超出范围并被收集。:
string message = string.Format("{0} Days, {1} hours, and {2} minutes", sinceStarted.Days, sinceStarted.Hours, sinceStarted.Minutes);
答案 1 :(得分:2)
为了找出应用程序运行的时间,您可以尝试使用
TimeSpan span = DateTime.Now - Process.GetCurrentProcess().StartTime;