【问题标题】:Convert a Time to a formatted string in C#在 C# 中将时间转换为格式化字符串
【发布时间】:2010-04-26 21:10:30
【问题描述】:

Time.ToString("0.0") 显示为十进制“1.5”而不是 1:30。如何让它以时间格式显示?

private void xTripSeventyMilesRadioButton_CheckedChanged(object sender, EventArgs e)
{
    //calculation for the estimated time label
    Time = Miles / SeventyMph; 
    this.xTripEstimateLabel.Visible = true;
    this.xTripEstimateLabel.Text = "Driving at this speed the estimated travel time in hours is: " + Time.ToString("0.0") + " hrs";
}

【问题讨论】:

  • 时间是什么类型?它是浮动的吗?

标签: c# time string-formatting


【解决方案1】:
Time.ToString("hh:mm")

格式:

HH:mm  =  01:22  
hh:mm tt  =  01:22 AM  
H:mm  =  1:22  
h:mm tt  =  1:22 AM  
HH:mm:ss  =  01:22:45  

编辑:现在我们知道时间是double,将代码更改为(假设您需要小时和分钟):

// This will handle over 24 hours
TimeSpan ts= System.TimeSpan.FromHours(Time);
string.Format("{0}:{1}", System.Math.Truncate(ts.TotalHours).ToString(), ts.Minutes.ToString());

// Keep in mind this could be bad if you go over 24 hours
DateTime.MinValue.AddHours(Time).ToString("H:mm");

【讨论】:

  • 这对我也有用,虽然我要补充一点,在执行 .ToString() 时传入一种文化是一种很好的做法,无论是 CultureInfo.InvariantCulture 还是 CultureInfo.CurrentCulture(Microsoft FxCop 也建议这样做)
  • Time.ToString("hh:mm") 给了我一个格式异常。 (好像冒号必须转义,除了转义\也需要转义,所以你最终得到:Time.ToString("hh\\:mm")
【解决方案2】:

如果TimeSystem.Double,那么System.TimeSpan.FromHours(Time).ToString();

【讨论】:

  • (System.TimeSpan.FromHours(Time).ToString()) 非常感谢,但我怎样才能将字符串连接到仅输出 8:30 而不是 00:00:00.00000
  • string.Format("{0:HH:mm}", DateTime.MinValue + TimeSpan.FromHours(Time))
  • 如果您想知道,其他用户提出的更优雅的方法是 .NET 4.0 的新增功能
【解决方案3】:

我猜Time 的类型是TimeSpan?在这种情况下,the documentation of TimeSpan.ToString 可以帮助您,尤其是页面

如果 Time 是数值数据类型,您可以先使用TimeSpan.FromHours 将其转换为 TimeSpan。

(编辑:TimeSpan 格式字符串是在 .NET 4 中引入的。)

【讨论】:

    【解决方案4】:

    请注意,如果您在 24 小时工作,使用 HH:mm 而不是 hh:mm 非常重要。

    有时我错误地写了hh:mm,然后我得到的是“01:45”而不是“13:45”,并且无法知道是上午还是下午(除非你使用tt)。

    【讨论】:

      【解决方案5】:

      如果时间是浮点数或双倍时间,您将不得不这样做。 System.Math.Truncate(Time) 获取小时数

      然后 (时间 - System.Math.Truncate(Time))* 60 获取会议记录。

      【讨论】:

      • 是的,它是双重的,但我是 C# 的新手,一般来说,这是我在课堂上的第二个作业,所以请您详细说明如何使用它。我会做一些跑腿的工作,只需要方向。
      【解决方案6】:

      感谢所有的回复,我用这个DateTime.MinValue.AddHours(Time).ToString("H:mm");为我的程序,因为它是最容易实现的。

      【讨论】:

        【解决方案7】:

        从你的数值变量创建一个时间跨度:

        TimeSpan ts = new TimeSpan(Math.Floor(Time), (Time - Math.Floor(Time))*60);
        

        然后,使用 ToString 方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-17
          • 1970-01-01
          • 1970-01-01
          • 2014-10-29
          • 2015-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多