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

本文关键字:格式化 时间 输入 用户 | 更新日期: 2023-09-27 18:32:55

我正在用 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());
}

有人可以帮我弄清楚如何格式化吗?我上网发现了日期时间,但它也需要日期,我不需要为这个家庭作业添加它。提前非常感谢!

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

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

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

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

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

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

您可以使用 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

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