【问题标题】:How to display double as DateTime format (HH:mm:ss)?如何以 DateTime 格式 (HH:mm:ss) 显示双精度?
【发布时间】:2013-03-22 07:31:57
【问题描述】:

又是关于双精度和时间格式(HH:mm:ss)的问题。

我正在尝试从现在开始每隔 5 分钟进行一次时间间隔分段。

为了做到这一点,我执行如下计算:

private string Get_now(int minus)
{
   DateTime n = DateTime.Now.AddMinutes( 0 - minus);

   double now = ((n.Hour > 12) ? n.Hour - 12 : n.Hour) * 10000
                        + ((n.Minute > 60) ? n.Minute - 60 : n.Minute) * 100
                                + ((n.Second > 60) ? n.Second - 60 : n.Second);

   string string_now = Convert.ToString(now);

   return string_now;
}

计算结果会给我双数,例如,如果现在时间是03:50:00,如果我输入Get_now(0),“现在”将是35000;如果我输入 Get_now(5),“现在”将是 345000。

这就是我将“现在”打印到文本框的方式。

textBox1.Text = Get_now(0);
textBox2.Text = Get_now(5);
textBox3.Text = Get_now(10);
textBox4.Text = Get_now(15);
textBox5.Text = Get_now(20);

这是我在获胜表格中的结果:

如您所见,所有 Get_now 结果都显示为双精度值。

我想要的是以时间格式显示为 00:00:00

这意味着,结果必须如下所示:

42352 --> 04:23:52
41852 --> 04:18:52
41352 --> 04:08:52
40852 --> 04:08:52
40352 --> 04:03:52  

否则,如果您有更好的方法来减去每 5 分钟的时间(固定时间间隔)并将其显示为字符串格式,请随时在此处发表您的评论。

【问题讨论】:

标签: c# winforms datetime double


【解决方案1】:

为什么要将时间转换为双倍?会不会很简单?

    private static string Get_now(int minus)
    {
        return DateTime.Now.AddMinutes(-minus)
            .ToString("HH:mm:ss");
    }

【讨论】:

  • +1 用于解决实际问题。我的回答狭窄,即使仍然解决了 OPs 问题。
  • 嗯...最初我这样做是因为我想将数据类型从时间格式更改为双精度,最终,我决定改变主意以显示为字符串格式.. 结果,我正在打开一个大回合。求问!!
【解决方案2】:

在您的Get_now 方法中使用此语句将double 转换为string

string string_now = now.ToString("0#:##:##", CultureInfo.InvariantCulture);

将为Get_now(15) 调用返回09:21:24

InvariantCulture 是可选的,但它可以保护您免受特定文化环境的影响

【讨论】:

  • 谢谢。我在其他类似的帖子中也看到了这个声明.. 但我尝试“00:00:00”但它不起作用......所以我实际上应该将 0 更改为 #... 非常感谢
猜你喜欢
  • 2013-03-17
  • 2014-05-12
  • 2023-03-22
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 2017-11-15
  • 2013-08-11
相关资源
最近更新 更多