2012-06-07 38 views
0

我有一個樣本日期C#整整一小時格式

DateTime startDate = DateTime.Parse("2011-01-01 00:00:00"); 
DateTime endDate = DateTime.Parse("2011-01-03 01:01:03"); 

我怎樣才能得到它的49:01:03經過時間?我無法獲得任何字符串格式,包括天。

目前我想在DataGridView的列上使用它。

下面是它的示例代碼:

private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e) 
{ 
    e.Column.CellTemplate.Style.FormatProvider = new DayToHour(); 
    //e.Column.CellTemplate.Style.Format = ""; 
} 

但我無法得到它的工作:(

注:我沒有上減去日期和時間任何問題。我問的是格式

閉:。只是用來包裝類從繼承的IFormatProvider

回答

1

我覺得可能沒有可用的這樣的格式,因此您將獲得在這些線路上的值

TimeSpan diff = endDate - startDate; 
String.Format("{0:00}hr {1:00}mn {2:00}sec", 
        Math.Truncate(diff.TotalHours),diff.Minutes,diff.Seconds); 

也看看,當你發佈這個代碼Custom Format provider

3

使用時間跨度類:

TimeSpan ts = endDate - startDate; 

然後你在時間跨度類得到你需要的所有信息。我假設格式不是問題。

+0

接下來的時間,選擇的代碼,然後按{}代碼示例圖標,您也可以按'按Ctrl + K'很好地格式化:) –

+0

我想格式不是日期扣除。 –

0
TimeSpan tp = endDate.Subtract(startDate); 
string myString = tp.ToString("c"); 

myString應該包含經過的時間。對於其他時間範圍格式,請檢查thisthis

+0

如果他想要總小時而不是天,小時等,那麼它沒有內置的TimeSpan格式字符串。 –

+0

嗯,他寫道「我不能得到任何字符串格式,包括days.',也許我理解錯了 – Jcl

+0

他指定了他想要的輸出:」我怎樣才能達到它的經過時間49:01:03?「 - 請注意,它在一開始就有總小時數,沒有任何一天的信息。不知道他爲什麼繼續談論「包括幾天」。我想只是一個不好的規範。 ;) –

0

這是否適合您?

using System; 

namespace Demo 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DateTime startDate = DateTime.Parse("2011-01-01 00:00:00"); 
      DateTime endDate = DateTime.Parse("2011-01-03 01:01:03"); 

      TimeSpan elapsed = endDate - startDate; 

      string result = string.Format("{0:d2}:{1:d2}:{2:d2}", elapsed.Days*24 + elapsed.Hours, elapsed.Minutes, elapsed.Seconds); 

      Console.WriteLine(result); 
     } 
    } 
} 

我不太確定您將如何獲得顯示在控件中。您可能需要編寫實現,做正確的事一個ToString()一個包裝類,並傳遞英寸

+0

是的這是好的,但我不能用於我的DataGridView。 –

相關問題