2013-08-17 96 views
-2

我已经编写了正常运行时间到我的应用程序,它只是显示随机数字?字符串格式错误

节目时间是此代码

public static DateTime TimeStarted { get; set; } 

    public static void Time(string[] args) 
    { 
     //set start time 
     Program.TimeStarted = DateTime.Now; 
    } 

,然后这是一类以显示正常运行时间

case "uptime": 
{ 
    TimeSpan sinceStarted = (TimeSpan)(DateTime.Now - Program.TimeStarted); 
    double secondsRunning = sinceStarted.TotalSeconds; 
    string message = string.Format("{0} Days, {1} hours, and {2} minutes", sinceStarted.Days, sinceStarted.Hours, sinceStarted.Minutes); 
    Session.SendData(UserAlertModernComposer.Compose("Stats", message)); 
    return true; 
} 

其目前说735096天7小时和34分钟的时候,正常运行时间大约是20分钟,

+0

检查,请 “Program.TimeStarted” 值;你可以通过“message = Program.TimeStarted.ToString()”来测试它。格式化本身似乎是正确的。 –

+0

你在哪里调用Time方法? – Ehsan

+1

TimeSpan位是好的,你确定Program.TimeStarted是你的想法。 –

回答

0

考虑使用Stopwatch class您的目的。它在System.Diagnostics名称空间中,并且应该更适合您。

using System; 
using System.Diagnostics; 
using System.Threading; 
class Program 
{ 
    static void Main(string[] args) 
    { 
     Stopwatch stopWatch = new Stopwatch(); 
     stopWatch.Start(); 
     Thread.Sleep(10000); 
     stopWatch.Stop(); 
     // Get the elapsed time as a TimeSpan value. 
     TimeSpan ts = stopWatch.Elapsed; 

     // Format and display the TimeSpan value. 
     string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", 
      ts.Hours, ts.Minutes, ts.Seconds, 
      ts.Milliseconds/10); 
     Console.WriteLine("RunTime " + elapsedTime); 
    } 
} 
3

有没有必要保持你自己的这个值。它已经在Process.StartTime属性中可用。您只需要获得当前进程的句柄

Process p = Process.GetCurrentProcess(); 
TimeSpan sinceStarted = (TimeSpan)(DateTime.Now - p.StartTime); 
string message = string.Format("{0} Days, {1} hours, and {2} minutes", 
      sinceStarted.Days, sinceStarted.Hours, sinceStarted.Minutes); 
+0

ive设置为控制台标题有一种方法,我可以使其自动更新? (刷新)说...每5-10秒? –

+0

使用计时器,将interval属性设置为你喜欢的,并更新Timer.Tick事件中的表单标题。 [这里是文档和示例](http://msdn.microsoft.com/en-us/library/System.Windows.Forms.Timer.aspx) – Steve

0

正如我的评论中所述,您从不称呼您的Time方法。 这意味着TimeStarted将具有DateTime.MinValue。 DateTime.MinValue相当于01/01/0001 00:00:00。因此你得到的结果。

你需要做的就是写下面的行的Program.cs

Program.TimeStarted = DateTime.Now; 

其余部分都很好