7

我试图只获得一个DateTime对象的时间。

假设我有这个对象:

 Nullable<DateTime> data = new DateTime(2007,6,15,5 ,23,45);

我尝试使用:

data.Value.ToShortTimeString()

我收到:

5:23 AM

我希望能够只显示5:23

我怎样才能做到这一点?

4

6 回答 6

16

您可以使用ToString具有适当格式字符串的方法:

var time = date.ToString("H:mm");
于 2013-04-15T08:32:58.067 回答
4

您可以使用 “H”自定义格式说明符

“H”自定义格式说明符将小时表示为从 0 到 23 的数字;也就是说,小时由一个从零开始的 24 小时制表示,该时钟从午夜开始计算小时数。单位数小时的格式不带前导零。

Nullable<DateTime> data = new DateTime(2007, 6, 15, 5, 23, 45);
Console.WriteLine(data.Value.ToString("H:mm"));

输出将是;

5:23

这是一个DEMO.

欲了解更多信息,请查看Custom Date and Time Format Strings

于 2013-04-15T08:34:29.023 回答
3
        Nullable<DateTime> data = new DateTime(2007, 6, 15, 5, 23, 45);
        var timeofDay   = data.Value.TimeOfDay; // 05:23:45
于 2013-04-15T08:35:12.187 回答
3

如果需要获取TimeSpan类型,请使用 DateTime 类中名为 的属性TimeOfDay。它只返回“时间”部分。

如果您需要获取该格式的字符串,则使用 TimeOfDay 是一种矫枉过正的做法,只需使用它ToString("hh:mm")来格式化您的输出。如果您不想要类似的结果05:40,请使用ToString("H:mm").

于 2013-04-15T08:37:29.327 回答
2
var time = date.ToString("H:mm");

H这里代表 24 小时制。即0-23

查看更多格式自定义日期和时间格式字符串

于 2013-04-15T08:36:25.960 回答
0

奇怪,对我来说效果很好,可能是视觉工作室中的设置?

你可以试试这个

Nullable<DateTime> data = new DateTime(2007, 6, 15, 5, 23, 45);
Debug.Write(data.Value.Hour + ":" + data.Value.Minute);
于 2013-04-15T08:40:27.053 回答