-3

在 C# 中

DateTime dateAndTime = DateTime.Now;

给出当前日期和时间。我只需要当前时间。如果我使用字符串,则可能是:

string time=DateTime.Now.ToString("hh:mm:ss");

是否有可能只获得时间部分DateTime而不经过 a string

4

3 回答 3

7

TimeSpan您可以通过访问来获取 a 中的当前时间TimeOfDay,如下所示:

TimeSpan time = DateTime.Now.TimeOfDay;

现在time将表示自午夜以来经过的时间量。

于 2013-04-08T07:15:17.120 回答
2

没有开箱即用的类型只能保持一段时间。您可以使用TimeSpan,甚至 .NET 框架也可以在某些部分使用(例如DateTime.TimeOfDay),但我认为这TimeSpan确实有不同的目的。

TimeSpan,引用 MSDN,只是“测量时间间隔”。这很容易超过组成一天的小时、分钟、秒等(即总共 24 小时)。实际上,该TimeSpan结构提供了这一点,例如,具有类似的属性Days

因此,我认为TimeSpan不太适合表示一天中的时间(我假设您在说“当前时间”时是指您的意思)。

这给我们带来了另一个问题。“当前时间”究竟是什么?正如我所说,我假设您的意思是“当前时间”中的当前时间。但是当前时间也可能意味着自过去某个特定时间点以来的当前(经过)时间。

诚然,所有这些都是理论上的,甚至是夸夸其谈的,并不能真正帮助你。

我只会使用DateTime. 在您真正关心“时间”值的地方,只需使用时间部分(就像您在示例中所展示的那样,您所知道的ToString)。虽然,根据您需要的时间,您可能会求助于DateTime.TimeOfDay属性,而不是简单地将其格式化为字符串(当然,除非这是您需要的)。

最后,您还可以求助于第三方库,如Node Time,它们只提供时间类型(如LocalTime)。

于 2013-04-08T07:14:56.463 回答
-1
string time = string.Format("{0:hh-mm-ss-tt}", DateTime.Now);
于 2013-04-08T07:15:40.680 回答