2013-08-17 124 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; 

其餘部分都很好