当前位置: 首页 > 知识库问答 >
问题:

如何显示两个日期之间的计算值,只有小时和分钟以上24小时的差异在C#

闾丘成礼
2023-03-14

我有一个叫做Duration的属性,这个属性是对另外两个叫做StartDate和EndDate的属性的计算。

问题是,我需要这两个日期之间的差异在格式"hh: mm",我可以做到这一点与大量的代码和解决方案,我在互联网上找到的,但我总是有同样的问题在最后,天计数...

今天我有以下代码:

[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));
 }
}

考虑到我们有以下开始和结束日期值:开始日期=2019/03/14-上午10:43结束日期=2019/03/14-上午11:00

它显示这样的输出:

持续时间=00:16

但当我有超过24小时的差异时,它会计算一天,我得到一个无效值。

例如:StartDate=2019/03/05-03:00 AM EndDate=2019/03/15-04:00 AM

它打印:

持续时间=1.01:

这是一天,我需要以小时为单位:分钟格式。

谁能帮帮我吗?

共有3个答案

汪胡非
2023-03-14

随着时间的推移:

TimeSpan span = (EndDate - StartDate);

String.Format("{0}:{1}",span.Hours, span.Minutes);
卢英范
2023-03-14

这是如何做到的:

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分钟过去了。

谢翰学
2023-03-14

最好不要使用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放在里面,强制它在只有一位数的情况下显示前导零。我把TotalHour转换成int,因为TotalHour实际上返回了一个带有您不想要的分数成分的双精度。我没有使用TotalMinute,因为我认为第二个组件不相关。

 类似资料:
  • 问题内容: 如果我有两个这样的日期时间: 如何以以下格式获取这些日期时间之间的差异: 我用 但是我只有时间。 问题答案: 试试这个- 询问: 输出:

  • 问题内容: 我试图获取当前日期与PHP 调用中的日期之间的差异,例如:。如何获得两个日期之间的时间差。我想有一个比较两个日期的函数,然后返回分钟,返回小时和返回天等等。 我应该怎么做? 编辑:当前接受的答案已经完全做了我想要做的。我建议您以方便使用的方式获取它,以便以PHP 函数使用的形式获取两个日期之间的时间。如果您对PHP不太熟悉,那么这是从1970年1月1日开始的秒数。这对于PHP后端非常有

  • 问题内容: 我正在使用ES,并且我需要一个查询,该查询返回两个datetime(mysql timediff)之间的差,但是还没有找到ES的任何功能来做到这一点。有人可以帮助我吗? MySQL查询 谢谢! 问题答案: 最好的是脚本字段。如果您已启用动态脚本并且这些日期字段在映射中定义为日期,则上述搜索查询应该可以正常工作。 请注意,您将获得epoch的结果,您需要将其转换为面额。 您可以在此处阅读

  • 问题内容: 我在-type字段中将上次登录时间存储在MySQL中。当用户登录时,我想获取上次登录时间与当前时间(我使用)之间的时差。 我该如何计算? 问题答案: 使用MySQL函数。例如,您可以使用: 在您的情况下,函数的第三个参数将是当前登录时间()。第二个参数是上次登录时间,该时间已在数据库中。

  • 我试图得到之间的差异的当前日期作为和一个日期从PHP调用例如:。我该如何计算这两个日期之间的时间差异。我想有一个函数,比较两个日期和

  • 问题内容: 我正在为员工开发时间管理系统。 我想要持续时间员工迟到多少时间,或者他早到了多少时间。 我有以下结构。 我想要迟到的报告(即谁在ActualInTime之后的清晨到达,并且在hh:mm:ss中持续了多少时间),并且还想要提早去(即谁在格式为hh:mm:ss的持续时间中在ActualOutTime之前的傍晚去了) 那你能帮我吗。??? 问题答案: 此代码可能会帮助您…