1

又是关于双重和时间格式(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 分钟的时间(固定时间间隔)并将其显示为字符串格式,请随时在此处发表您的评论。

4

2 回答 2

4

为什么将时间转换为双倍?可能会很简单吗?

    private static string Get_now(int minus)
    {
        return DateTime.Now.AddMinutes(-minus)
            .ToString("HH:mm:ss");
    }
于 2013-03-22T07:43:41.043 回答
2

使用此语句转换doublestring您的Get_now方法内部

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

09:21:24将返回Get_now(15)通话

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

于 2013-03-22T07:35:22.063 回答