C# - 使用小时:分钟:秒将字符串解析为DateTime

Niv*_*Niv 6 c# visual-studio

我收到整数用户输入的小时,分​​钟和秒.

现在,当我尝试使用DateTime.Parse和DateTime.TryParse AND Convert.ToDateTime时,它们都返回正确的小时/分钟/秒; 但是,它也会返回日期(年,月,日等).

        string a = this.hours.ToString() + ":" + this.minutes.ToString() + ":" + this.seconds.ToString();

        this.alarm = new DateTime();
        this.alarm = DateTime.ParseExact(a, "H:m:s", null);
Run Code Online (Sandbox Code Playgroud)

假设小时是05,小时是21秒,秒是50."a"将是05:21:50.我希望"闹钟"是05:21:50.但是,它实际上是(可能):

11/23/10 05:21:50
Run Code Online (Sandbox Code Playgroud)

有没有办法让它正常工作?提前致谢.

Jus*_*ner 11

DateTime实例将始终包含一些日期信息.

如果你只想表示一天中的时间,你应该使用TimeSpan(TimeSpan表示自午夜以来的跨度......或者一天中的时间.你还会注意到DateTime.TimeOfDay属性做同样的事情).

代码类似:

var timeOfDay = TimeSpan.ParseExact(a, "H:m:s", null);
Run Code Online (Sandbox Code Playgroud)


ste*_*nar 5

DateTime始终包含时间日期.如果您想要一个只节省时间的类,您可以创建自己的类struct来处理它.但在一般情况下,没有必要,因为您可以简单地忽略DateTime结构的日期部分,例如:

string a = "05:21:50";

DateTime alarm = new DateTime();
alarm = DateTime.ParseExact(a, "H:m:s", null);
Console.WriteLine(alarm.ToString("H:m:s"));
Console.WriteLine(alarm.Hour);
Console.WriteLine(alarm.Minute);
Console.WriteLine(alarm.Second);
Run Code Online (Sandbox Code Playgroud)