获取日期差异的差异>24小时
本文关键字:24小时 获取 取日期 | 更新日期: 2023-09-27 18:04:12
我在我的web应用程序上显示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
。
任何帮助都非常感谢
这样做怎么样?
string duration =
String.Format(
@"{0}:{1:mm':ss':fff}",
seconds.Days * 24.0 + seconds.Hours,
seconds);
像这样?
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");
"duration"字符串将根据需要为"48:28:30"。
我想出了一个快速的解决方案。但它不是最好的。我只用你的数据测试过。因此,它需要一些改进。
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);
或者用一种更时髦的方式:
string duration = String.Format($"{(int)seconds.TotalHours}:{seconds.Minutes}:{seconds.Seconds}");
*编辑:也更可读
很简单:
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);