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 继承的包装类。

C# 整小时格式

使用 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(),并将其传入。