我接收的是整数用户输入的小时、分钟和秒。
现在,当我尝试使用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);
假设小时是05,分钟是21,秒是50。“a”将是05:21:50。我期望“alarm”是05:21:50。然而,它实际上是(可能是):
11/23/10 05:21:50
有什么办法能让它正常工作吗?先谢了。
6条答案
按热度按时间2izufjch1#
DateTime示例将始终包含一些日期信息。
如果您试图只表示一天中的时间,则应该使用TimeSpan(TimeSpan表示从午夜开始的跨度......或一天中的时间。您还将注意到DateTime.TimeOfDay属性也做同样的事情)。
代码类似于:
yeotifhr2#
DateTime总是保存time * 和 * date。如果你想要一个只保存时间的类,你可以创建你自己的
struct
来处理它。但是在一般情况下,没有必要这样做,因为你可以简单地忽略DateTime结构的date部分,例如:ws51t4hk3#
∮ ∮ ∮ ∮
0mkxixxg4#
您不能这样做,因为按照设计,DateTime表示Date , 表示时间。
.NET Framework中没有用于表示时间的类型,但最接近的类型是TimeSpan。如果时间语义对您很重要,请考虑将其 Package 在您自己的TimeOfDay类型中。
eiee3dmh5#
新答案:
从. NET 6开始,存在一个内置的
TimeOnly
结构,它的构造函数需要数小时、数分钟和数秒旧答案:
TimeSpan有一个构造函数,它接受小时、分钟和秒作为参数,所以你的代码应该是:
6pp0gazn6#
正如前面提到的,
DateTime
对象总是包含一个Date
部分,但最简单的方法就是忽略它,然后,在打印它时,可以使用以下语法: