[英]How to show a calculated value between two dates with just the hour and the minute above 24 hours of difference in C#
我有一個名為Duration的屬性,此屬性是對另外兩個名為StartDate和EndDate的屬性的計算。
問題是,我需要以“ hh:mm”格式區分兩個日期之間的區別,並且可以使用我在Internet上找到的許多代碼和解決方案來做到這一點,但是最后我總是遇到相同的問題,天數...
今天,我有以下代碼:
[NotMapped]
public string Duration
{
get
{
if (StartDate != null && EndDate != null)
{
return (EndDate - StartDate).Value.ToString().Substring(0, 5);
}
return null;
}
set
{
if (value == null) throw new ArgumentNullException(nameof(value));
}
}
考慮到我們具有以下開始和結束日期值:StartDate = 2019/03/14-10:43 AM EndDate = 2019/03/14-11:00 AM
它顯示如下輸出:
持續時間= 00:16
但是,當我的時差超過24小時時,它就算一天,並且我得到的值無效。
例如:StartDate = 2019/03/05-03:00 AM EndDate = 2019/03/15-04:00 AM
它打印:
持續時間= 1.01:
今天很忙,我需要采用小時:分鍾格式。
有人可以幫我嗎?
最好不要使用SubString。
如果您從另一個日期減去一個日期,則會得到一個TimeSpan
您可以對此執行ToString()
或使用其屬性來顯示所需的內容,但是由於要顯示總小時數而不是僅顯示小時數,因此必須使用各個屬性:
var startDate = DateTime.Now;
var endDate = startDate.AddHours(30).AddMinutes(20);
var difference = endDate - startDate;
var hoursComponent = ((int)difference.TotalHours).ToString("D2");
var minutesComponent = difference.Minutes.ToString("D2");
Console.WriteLine($"{hoursComponent}:{minutesComponent}");
這樣的事情應該做。 如果只有一個數字,我將D2放入其中以使其顯示前導零。 我將TotalHours
轉換為int
因為TotalHours實際上返回一個帶有您不想要的小數部分的double。 我沒有使用TotalMinutes
因為我認為第二個組件不相關。
這是怎么做的:
DateTime startDate = DateTime.Now;
DateTime endDate = startDate.AddDays(1).AddHours(2).AddMinutes(3);
TimeSpan difference = endDate - startDate;
int totalHours = (int)difference.TotalMinutes / 60;
int totalMinutes = (int)difference.TotalMinutes % 60;
Console.WriteLine(string.Format("{0}:{1}", totalHours.ToString("D2"), totalMinutes.ToString("D2")));
輸出:
26:03
根據您的要求,經過26小時3分鍾。
嘗試這個,
hours = (datevalue1 - datevalue2).TotalHours().ToString();
與時間跨度:
TimeSpan span = (EndDate - StartDate);
String.Format("{0}:{1}",span.Hours, span.Minutes);
您可以根據需要使用TimeSpan
的ToString
方法來格式化輸出:
void Main()
{
DateTime? startDate = new DateTime(2019, 3, 5, 3, 0, 0);
DateTime? endDate = new DateTime(2019, 3, 15, 4, 0, 0);
TimeSpan result = (endDate - startDate).Value;
Console.WriteLine(result.ToString(@"dd\:hh\:mm\:ss"));
}
輸出:
10:01:00:00
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.