获取差异的日期差异> 24小时

时间:2016-08-26 10:27:13

标签: c# .net datetime

我使用以下代码在我的网络应用中以hh:mm:ss格式显示两个日期之间的差异:

double durationSeconds = (EndDateTime - StartDateTime).TotalSeconds;
TimeSpan seconds = TimeSpan.FromSeconds(durationSeconds);
string duration = seconds.ToString(@"hh\:mm\:ss\:fff");
litDuration.Text = duration;

这仅适用于不到24小时的差异,但我希望小时计数器显示更高。例如使用以下DateTimes

StartDateTime = 2016-08-25 15:00:00
EndDateTime = 2016-08-27 15:28:30

hh:mm:ss格式的差异应该是48:28:30,但目前正在显示00:28:30

非常感谢任何帮助

5 个答案:

答案 0 :(得分:3)

这样做怎么样?

string duration =
    String.Format(
        @"{0}:{1:mm\:ss\:fff}",
        seconds.Days * 24.0 + seconds.Hours,
        seconds);

答案 1 :(得分:1)

我提出了一个快速解决方案。但它不是最好的。我只用你的数据测试过它。所以需要一些改进。

 var startDateTime = Convert.ToDateTime("2016-08-25 15:00:00");
 var endDateTime = Convert.ToDateTime("2016-08-27 15:28:30");
 String.Format("{0}:{1}:{2}", 
            Convert.ToInt32(Math.Round((endDateTime - startDateTime).TotalHours -0.5, MidpointRounding.ToEven) ),
            (endDateTime - startDateTime).Minutes,
            (endDateTime - startDateTime).Seconds);

答案 2 :(得分:0)

这样的东西?

var StartDateTime = new DateTime(2016, 8, 25, 15, 0, 0);
var EndDateTime = new DateTime(2016, 8, 27, 15, 28, 30);

var durationTimeSpan = EndDateTime.Subtract(StartDateTime);
var duration =
    (int)durationTimeSpan.TotalHours + ":" +
    durationTimeSpan.Minutes.ToString("00") + ":" +
    durationTimeSpan.Seconds.ToString("00");

"持续时间"字符串将是" 48:28:30"根据需要。

答案 3 :(得分:0)

或以更时尚的方式:

string duration = String.Format($"{(int)seconds.TotalHours}:{seconds.Minutes}:{seconds.Seconds}");

*编辑:也更具可读性

答案 4 :(得分:0)

很简单:

DateTime startDateTime;
DateTime.TryParse("2016-08-25 15:00:00", out startDateTime);
DateTime endDateTime; 
DateTime.TryParse("2016-08-27 15:28:30", out endDateTime);
TimeSpan span = (endDateTime - startDateTime);

var durationString = string.Format("{0}:{1}:{2}", (int)span.TotalHours, span.Minutes, span.Seconds);