从datetime剥离秒数

Dee*_*ngh 5 c#

我想从日期时间开始/删除秒数.我检查了一些解决方案,但显示使用格式字符串的解

DateTime datetime = DateTime.UtcNow;
Run Code Online (Sandbox Code Playgroud)

这个日期时间也有几秒钟,但我想从这个日期时间开始.

内联注释:我想使用任何内置函数或正则表达式去掉秒.

预期投入:08/02/2015 09:22:45(不清楚stringDateTime)

结果:08/02/2015 09:22:00(不清楚stringDateTime)

小智 21

你可以做

DateTime dt = DateTime.Now;
dt = dt.AddSeconds(-dt.Second);
Run Code Online (Sandbox Code Playgroud)

将秒数设置为0.

  • 小心:这不会从DateTime中删除毫秒. (17认同)
  • 小心:即使你执行 .AddMilliseconds(-dt.Millisecond) 仍然会有几分之一毫秒的剩余时间。 (8认同)

Mik*_*son 19

您可以创建一个新的日期实例,并将秒设置为0.

DateTime a = DateTime.UtcNow;
DateTime b = new DateTime(a.Year, a.Month, a.Day, a.Hour, a.Minute, 0, DateTimeKind.Utc);

Console.WriteLine(a);
Console.WriteLine(b);
Run Code Online (Sandbox Code Playgroud)


cla*_*oda 10

DateTime实际上单独存储为 aDate和 a TimeOfDay。我们可以轻松地重新初始化日期,而无需在TimeSpan初始化中包含秒数。这也确保删除任何剩余的毫秒。

date = date.Date + new TimeSpan(date.TimeOfDay.Hours, date.TimeOfDay.Minutes, 0);
Run Code Online (Sandbox Code Playgroud)


All*_*ice 7

从 DateTime 中去除秒和毫秒的简单解决方案:

DateTime dt = DateTime.Now;
DateTime secondsStripped = dt.Date.AddHours(dt.Hour).AddMinutes(dt.Minute);
Run Code Online (Sandbox Code Playgroud)


bla*_*tom 5

这个比较优雅的解决方案怎么样?

new DateTime(DateTime.UtcNow.Ticks / 600000000 * 600000000)
Run Code Online (Sandbox Code Playgroud)

...这也将剥夺任何毫秒/微秒/纳秒。