C# 整小时格式
本文关键字:格式 小时 | 更新日期: 2023-09-27 18:36:24
我有一个示例日期
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 继承的包装类。
使用 TimeSpan 类:
TimeSpan ts = endDate - startDate;
然后你在TimeSpan课程中得到了你需要的所有信息。我假设格式不是问题。
我认为可能没有这样的格式可用,因此您必须在这些行上获取值
TimeSpan diff = endDate - startDate;
String.Format("{0:00}hr {1:00}mn {2:00}sec",
Math.Truncate(diff.TotalHours),diff.Minutes,diff.Seconds);
另请查看此自定义格式提供程序
TimeSpan tp = endDate.Subtract(startDate);
string myString = tp.ToString("c");
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(),并将其传入。