2014-12-03 60 views
0

我正在用C#编写一个简单的类,它所做的只是将三个浮点变量输出到DOS控制台(小时,分钟,秒)。输出是这样的:小时= 3,分钟= 15,秒= 0.但我想知道我将如何去格式化它显示3:15:00而不是小时= 3,分钟= 15,秒= 0如何将用户输入格式化为时间

这是我创建的打印出来的信息的方法:

/// <summary> 
/// Prints the time to the console 
/// </summary> 
public void PrintTime() 
{ 
    Console.WriteLine(pHour.ToString() + ":" + pMinutes.ToString() + ":" + Seconds.ToString()); 
} 

有人可以帮助我弄清楚如何格式化这个?我上网了解DateTime,但它也需要日期,因此我不需要在此作业中添加该日期。提前谢谢了!

+1

小时和分钟不应该漂浮(也许不是秒,这取决于你想要什么)。 – crashmstr 2014-12-03 17:57:29

回答

4

您可以使用字符串格式Console.WriteLine提供:

Console.WriteLine("{0}:{1:00}:{2:00}", pHour, pMinutes, Seconds); 
+2

应该至少使用'00'格式化器,分钟和秒至少为{0}:{1:00}:{2:00}' – juharr 2014-12-03 17:56:35

+0

@juharr:好建议,编辑。 – 2014-12-03 17:57:53

+0

@DanielPeñalba是的,但是...我怎么安排它像03:15:00? – user3838697 2014-12-03 17:58:45

0

有一点断章取义。还有一个方法是使用DateTime类输出字符串

DateTime.Now.ToString("yyyy MM dd HH:mm:ss.fff tt", [System.Globalization.CultureInfo]::GetCultureInfo("en-US")); 

这种方法的优点是日期分隔容易插入。缺点是你不能在格式字符串中插入普通文本。

0

您可以使用DateTime对象来表示您的时间并忽略日期部分。或者你可以使用TimeSpan对象来完成类似的壮举。

或者,只是忽略两者完全并打印出你的输入值是:

int hours = 5; 
    int minutes = 55; 
    int seconds = 7; 

    DateTime dt = new DateTime(2014, 1, 1, hours, minutes, seconds); 

    TimeSpan ts = new TimeSpan(hours, minutes, seconds); 

    Console.WriteLine("{0:00}:{1:00}:{2:00}", dt.Hour, dt.Minute, dt.Second); 
    Console.WriteLine("{0:00}:{1:00}:{2:00}", ts.Hours, ts.Minutes, ts.Seconds); // This is actually not needed for using a TimeSpan, see next line. 
    Console.WriteLine(ts); 
    Console.WriteLine("{0:00}:{1:00}:{2:00}", hours, minutes, seconds); 

在行动 https://dotnetfiddle.net/6lUwnR

需要注意的是,如果你在某些传入超范围值的奇怪的东西会发生案件,所以一定要验证您的输入! :)

相关问题