如何显示double作为日期时间格式(HH:mm:ss)?

问题描述:

又是关于double和时间格式(HH:mm:ss)的问题。如何显示double作为日期时间格式(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; 
} 

计算结果都会给我双号,例如,如果现在时间是3时50分〇〇秒,如果我把Get_now(0),“now”将是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); 

这里是我赢形式的结果:

enter image description here

正如你可以看到,所有的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分钟(修复时间间隔)中的时间并将其显示为字符串格式,请随时在此处放置您的评论。

+0

任何特别的原因经常['则DateTime.ToString( “HH:MM:SS”)'](http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx)不工作为你? – 2013-03-22 07:43:23

为什么你把时间换算成双倍?可能会是简单的?

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

+1解决一个真正的问题。我的答案是**太窄,即使仍然解决了OP问题。 – 2013-03-22 08:01:54

+0

那么......最初我是这么做的,因为我想将数据类型从时间格式更改为双倍,最终,我决定改变主意,以字符串格式显示..结果,我开启了一个大四周。 TQ! – jhyap 2013-03-22 08:13:05

使用此语句double转换为stringGet_now方法内部

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

将返回09:21:24Get_now(15)呼叫

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

+0

谢谢。我在其他类似的帖子中也看到了这个声明..但是我尝试“00:00:00”并且它不工作...所以我实际上应该将0更改为#...非常感谢你 – jhyap 2013-03-22 07:44:58