2013-03-22 278 views
1

又是關於double和時間格式(HH:mm:ss)的問題。如何顯示double作爲日期時間格式(HH:mm:ss)?

我想從現在開始,每隔5分鐘的時間間隔進行分割。

爲了做到這一點,我執行計算是這樣的:

private string Get_now(int minus) 
{ 
    DateTime n = DateTime.Now.AddMinutes(0 - minus); 

    double now = ((n.Hour > 12) ? n.Hour - 12 : n.Hour) * 10000 
         + ((n.Minute > 60) ? n.Minute - 60 : n.Minute) * 100 
           + ((n.Second > 60) ? n.Second - 60 : n.Second); 

    string string_now = Convert.ToString(now); 

    return string_now; 
} 

計算結果都會給我雙號,例如,如果現在時間是3時50分〇〇秒,如果我把Get_now(0),「now」將是35000;如果我把Get_now(5),「現在」將是345000.

這是我如何打印「現在」文本框。

textBox1.Text = Get_now(0); 
textBox2.Text = Get_now(5); 
textBox3.Text = Get_now(10); 
textBox4.Text = Get_now(15); 
textBox5.Text = Get_now(20); 

這裏是我贏形式的結果:

enter image description here

正如你可以看到,所有的Get_now結果是顯示爲雙重價值。

我要的是在時間格式爲00:00:00

顯示這意味着,其結果必須證明是這樣的:

42352 --> 04:23:52 
41852 --> 04:18:52 
41352 --> 04:08:52 
40852 --> 04:08:52 
40352 --> 04:03:52 

否則,如果你有更好的辦法減去每5分鐘(修復時間間隔)中的時間並將其顯示爲字符串格式,請隨時在此處放置您的評論。

+0

任何特別的原因經常['則DateTime.ToString( 「HH:MM:SS」)'](http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx)不工作爲你? – 2013-03-22 07:43:23

回答

4

爲什麼你把時間換算成雙倍?可能會是簡單的?

private static string Get_now(int minus) 
    { 
     return DateTime.Now.AddMinutes(-minus) 
      .ToString("HH:mm:ss"); 
    } 
+0

+1解決一個真正的問題。我的答案是**太窄,即使仍然解決了OP問題。 – 2013-03-22 08:01:54

+0

那麼......最初我是這麼做的,因爲我想將數據類型從時間格式更改爲雙倍,最終,我決定改變主意,以字符串格式顯示..結果,我開啓了一個大四周。 TQ! – jhyap 2013-03-22 08:13:05

2

使用此語句double轉換爲stringGet_now方法內部

string string_now = now.ToString("0#:##:##", CultureInfo.InvariantCulture); 

將返回09:21:24Get_now(15)呼叫

InvariantCulture是可選的,但它可以保護你免受特定的文化環境

+0

謝謝。我在其他類似的帖子中也看到了這個聲明..但是我嘗試「00:00:00」並且它不工作...所以我實際上應該將0更改爲#...非常感謝你 – jhyap 2013-03-22 07:44:58

相關問題