如何将用户输入格式化为时间

时间:2014-12-03 17:50:18

标签: c#

我在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,但它也需要日期,我不需要为此作业添加。非常感谢提前!

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

有点脱离背景。另一种方法是使用DateTime类来输出字符串

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

此方法的优点是可以在Date中轻松插入分隔符。缺点是您无法在格式字符串中插入普通文本。

答案 2 :(得分: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

请注意,如果在某些情况下传入超出范围的值,则会发生奇怪的事情,因此请务必验证您的输入! :)