存储当前时间而不是毫秒组件

xbo*_*nez 7 c# datetime

我有一个timepan对象,只需要持有时间,没有日期.我会用

DateTime.Now.TimeOfDay
Run Code Online (Sandbox Code Playgroud)

但问题是它给格式化了时间

15:51:51.7368329
Run Code Online (Sandbox Code Playgroud)

我不想要毫秒组件.我该如何修剪它?

Moh*_*eth 11

您可以使用DateTime.Now.Hour/Minute/Second属性,也可以使用DateTime.Now.ToString("HH:mm:ss").

有关详细信息,请参阅此处:http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx


mrc*_*owl 8

我相信这是你可能会追求的:

TimeSpan timeNow = DateTime.Now.TimeOfDay;
TimeSpan trimmedTimeNow = new TimeSpan(timeNow.Hours, timeNow.Minutes, timeNow.Seconds);
Run Code Online (Sandbox Code Playgroud)


And*_*bel 6

简单地减去毫秒部分:

DateTime myTime = DateTime.Now.TimeOfDay;
myTime = myTime.AddMilliseconds(-myTime.Millisecond);
Run Code Online (Sandbox Code Playgroud)

它可以用更少的代码完成,而无需先分配给myTime:

DateTime myTime = DateTime.Now.TimeOfDay.AddMilliseconds(
  -DateTime.Now.TimeOfDay.Millisecond);
Run Code Online (Sandbox Code Playgroud)

虽然有点优雅,但这是一个坏主意.当访问TimeOfDay两次时,在某个时刻它有可能在第二次访问之前已经过了另一毫秒.在那种情况下,结果不会是零毫秒.


Mar*_*ius 5

如果问题是显示它,你可以这样做:

DateTime.Now.ToString("HH:mm:ss")
Run Code Online (Sandbox Code Playgroud)