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。 –