在C#中将当前的DateTime秒和毫秒设置为0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#中将当前的DateTime秒和毫秒设置为0相关的知识,希望对你有一定的参考价值。

当前我正在使用此:

new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day,
             DateTime.Now.Hour, DateTime.Now.Minute, 0)

还有其他方法可以将秒和毫秒直接设置为0。

答案

您当前的代码很危险,因为您要多次评估DateTime.Now。最好是:

// Do you *definitely* want the current date/time in the system  local time zone?
// Might be correct for local client apps; almost certainly not for server-side code.
DateTime now = DateTime.Now;
DateTime rounded = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0);

还不错。另一种选择是:

DateTime now = DateTime.Now;
DateTime rounded = now.Date + new TimeSpan(now.Hour, now.Minute, 0);

如果您绝对要使用DateTime,并且您绝对要使用系统本地时区,那可能就是我要做的。

作为我的Noda Time项目的插件,类似于:

rounded = now.With(TimeAdjusters.TruncateToMinute);

...但是根据您想让now排在首位的类型​​,您还有很多选择要考虑。

以上是关于在C#中将当前的DateTime秒和毫秒设置为0的主要内容,如果未能解决你的问题,请参考以下文章

将Rails DateTime四舍五入到最近的15分钟间隔

在查询中将 DateTime.Ticks 转换为 MySQL DateTime

从毫秒到小时、分钟、秒和毫秒

将时间(以毫秒为单位)转换为c#中的dateTime [关闭]

SQL Server Compact 4.0 DateTime 精度不包括秒

在java中创建一个计数计时器(仅限秒和毫秒)