C#整小时格式
我有一个样本日期C#整小时格式,c#,datetime,formatting,C#,Datetime,Formatting,我有一个样本日期 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 s
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 = "";
}
但是我不能让它工作
注意:我在减去日期和时间方面没有任何问题。我只是问一下格式
Closed:刚刚使用了从IFormatProvider继承的包装类
使用TimeSpan类:
TimeSpan ts = endDate - startDate;
然后,您在TimeSpan类中获得了所需的所有信息。我假设格式不是问题。使用TimeSpan类:
TimeSpan ts = endDate - startDate;
TimeSpan tp = endDate.Subtract(startDate);
string myString = tp.ToString("c");
然后你在TimeSpan类中得到了你需要的所有信息。我想格式化不是问题
TimeSpan tp = endDate.Subtract(startDate);
string myString = tp.ToString("c");
myString
应包含经过的时间。请检查和以了解其他时间跨度格式
myString
应该包含经过的时间。请检查和以获取其他时间跨度格式。这对您有用吗
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(),并将其传入。这对您有用吗
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(),并将其传入。我认为可能没有此类格式可用,因此您必须在这些行中获取值
TimeSpan diff = endDate - startDate;
String.Format("{0:00}hr {1:00}mn {2:00}sec",
Math.Truncate(diff.TotalHours),diff.Minutes,diff.Seconds);
还可以看看这个我想可能没有这样的格式,所以您必须在这些行中获取值
TimeSpan diff = endDate - startDate;
String.Format("{0:00}hr {1:00}mn {2:00}sec",
Math.Truncate(diff.TotalHours),diff.Minutes,diff.Seconds);
下一次发布代码时,也可以查看一下这个,选择代码并按{}代码示例图标,或者按
Ctrl+K
将其格式化:)下一次发布代码时,选择代码并按{}对示例图标进行编码,或者按Ctrl+K
对其进行良好的格式设置:)如果他想要总小时数而不是天、小时数等,则没有内置的TimeSpan格式字符串。嗯,他写了我无法获得任何字符串格式,包括天。
,可能我理解错了他指定了他想要的输出:“我怎样才能使它达到49:01:03的运行时间?”-注意,它一开始的总小时数没有任何日期信息。不知道为什么他接着说“包括天”。我认为这是一个糟糕的规范。;@MatthewWatson为什么你认为这是一个糟糕的规范?因为示例格式是“49:01:03”“显示的是总小时数,而不是天数,但您的文本说明中显示的是“包括天数”,这与示例格式相矛盾。我想你的意思是“包括总小时”而不是“包括天”。如果他想要总小时而不是天、小时等,则没有内置的TimeSpan格式字符串。嗯,他写了我无法获得包括天在内的任何字符串格式。
,可能我理解错了他指定了他想要的输出:“我怎样才能使它达到49:01:03的运行时间?”-注意,它一开始的总小时数没有任何日期信息。不知道为什么他接着说“包括天”。我认为这是一个糟糕的规范。;@MatthewWatson为什么你认为这是一个糟糕的规范?因为示例格式是“49:01:03”“显示的是总小时数,而不是天数,但您的文本说明中显示的是“包括天数”,这与示例格式相矛盾。我想你的意思是“包括总小时”而不是“包括天”。