c# - 在 C# 中使用 DateTime 和 TimeSpan 进行计算

标签 c# datetime timespan calculation

我需要在 C# 中计算一个操作的已用时间和剩余时间。 我以 HH:MM:SS 的字符串格式保存了操作的开始

我有一个默认的操作时间长度,字符串格式为 HH:MM:SS

现在我想计算:

  • 剩余时间/额外时间:例如如果操作仍然低于默认长度,则应显示-HH:MM:SS,如果操作时间超过默认时间,则应显示+HH:MM :SS
  • 如果操作时间更长,我还希望在 % 样式中有 HH,MM 的 double 值。例如:3小时30分应该显示为3,5

两个结果并排显示。 我知道我必须将字符串值转换为 DateTime 和/或 TimeSpan 值才能进行计算,但目前我不知道如何计算,因为例如第一个操作不会给我一个负值,而是及时返回 [昨天 22:30:00]。

最佳答案

试试这个..

var start = "17:05:11"; // Pass this as a parameter
var startTime = DateTime.Parse(start);

var defaultDuration = TimeSpan.FromMinutes(2);
TimeSpan operationDuration = startTime - DateTime.Now;

TimeSpan diff = defaultDuration - operationDuration;

if (operationDuration > defaultDuration)
{
    Console.Out.WriteLine($"+{diff.Hours}:{diff.Minutes}:{diff.Seconds}");
}
else
{
    Console.Out.WriteLine($"-{diff.Hours}:{diff.Minutes}:{diff.Seconds}");
    Console.Out.WriteLine($"{diff.Hours},{Math.Round(((double)(diff.Minutes * 100 / 60)),0, MidpointRounding.AwayFromZero)}");//example: 3hours and 30 minutes should be displayed as 3,5
}

关于c# - 在 C# 中使用 DateTime 和 TimeSpan 进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931117/

相关文章:

python - 如何计算 Pandas 列中日期时间的剩余月份?

c# - 查找 TimeSpans 集合的平均值

c# - 这是用 TimeSpan 表示几十年的最佳方式吗?

c# - 实际上,具有单个成员的 C# 结构是否与在结构之外使用该单个成员一样高效?

c# - 如何在 ASP.NET C# 中发送电子邮件

datetime - 每分钟创建一次 Elasticsearch 索引

php - 是否有 PHP 函数来测试零日期

sql-server-ce - 在 SQL Server CE 中表示时间跨度的最佳方式是什么?

c# - structuremap Web Api 2 帐户 Controller 和个人帐户

c# - 如何向 css、javascript 添加根或基本 url?