【问题标题】:Work time calc - How to convert decimal to "hh:mm"?工作时间计算 - 如何将十进制转换为“hh:mm”?
【发布时间】:2017-03-02 20:53:26
【问题描述】:
DateTime dt1 = DateTime.Parse(label1.Text);
DateTime dt2 = DateTime.Parse(label2.Text);
TimeSpan ts1 = dt2 - dt1;

DateTime dt3 = DateTime.Parse(label3.Text);
DateTime dt4 = DateTime.Parse(label4.Text);
TimeSpan ts2 = dt4 - dt3;


TimeSpan workTime = ts1 + ts2;

label5.Text = workTime.TotalHours.ToString();

所以我的问题是如何修改此代码 sn-p 以便将其输出的数字从十进制转换为“hh:mm”?

【问题讨论】:

  • 通过使用ToString("hh:mm")?
  • @HimBromBeere 差不多。你需要转义:
  • @PatrickHofman 这不正确,因为它不会显示 total 小时。如果时间跨度为 1 天 2 小时 - 它将格式化为“02:00”,而不是“26:00”(我认为 OP 想要)。
  • @HimBromBeere 你必须将: 转义为ToString("hh\\:mm")ToString(@"hh\:mm")。如果我们知道workTime 不会超过一天,这确实是最简单的方法。
  • @Jon Hanna 不会超过一天。事实上,它正好是八小时。但是如果我工作的时间比那个时间长,我希望程序显示加班时间。

标签: c#


【解决方案1】:

如果你想包括总小时数(这样它也会将整天转换为小时),你可以这样做:

String.Format("{0:D2}:{1:D2}", (int)workTime.TotalHours, workTime.Minutes);

【讨论】:

    【解决方案2】:

    来自评论:

    不会超过一天

    然后

    label5.Text = workTime.ToString(@"hh\:mm");
    

    最简单且正确。如果您不确定 100% 不会超过一天,那么 Evk 的答案就是要使用的答案,因为上面将 25 小时显示为“01:00”,而 Evk 会将其正确呈现为“25:00”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2022-12-16
      • 2014-03-13
      • 2021-12-24
      • 2016-05-28
      • 2016-05-09
      • 1970-01-01
      相关资源
      最近更新 更多