gpt4 book ai didi

c# - 如何显示两个日期之间的计算值,仅小时和分钟超过 C# 中的 24 小时差异

转载 作者:太空宇宙 更新时间:2023-11-03 20:51:10 25 4
gpt4 key购买 nike

我有一个名为 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));
}
}

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

它显示这样的输出:

持续时间 = 00:16

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

例如:开始日期 = 2019/03/05 - 03:00 AM结束日期 = 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,因为我认为第二个组件不相关。

关于c# - 如何显示两个日期之间的计算值,仅小时和分钟超过 C# 中的 24 小时差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55167127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com