.net 日期到当天结束的时间C#

zqry0prt  于 2022-11-26  发布在  .NET
关注(0)|答案(2)|浏览(152)

我收到的日期为2022年1月1日h:00,m:00,s:00,ms:00
在一天结束时获得日期的最佳方法是什么,例如:2022年1月1日时23分,分59秒,秒59分,毫秒:九百九十九?
我试了两种方法:
var endOfDay = new TimeSpan(0, 23, 59, 59, 999);
time = time.Add(endOfDay);

time = time.AddDays(1).AddMilliseconds(-1);

rhfm7lfc

rhfm7lfc1#

这消除了所有的疑问,直到单个tick的分辨率。在下面的代码中,假设dateAndTime可以包括一个非零时间分量。

dateAndTime.Date.AddDays(1).AddTicks(-1);

这是

  • 确保我们只使用没有时间组件的日期作为参考点/日期
  • 将我们移到下一个日期的午夜
  • 减去一个分笔成交点,将我们带回到具有全分辨率时间分量的参考日期(如果您愿意,也可以使用毫秒,只要知道它的分辨率较低即可)。

虽然这是可行的,但通常最好考虑一种完全不依赖于时间组件的替代设计(例如,使用给定日期的第二天午夜作为给定参考日期的虚拟日结束时间)。

00jrzges

00jrzges2#

如果您只想打印出范围,则操作格式是基于意见的。但是,如果您想检查某个时间是否在一天之内,请按如下方式操作(注意>=<

if (timeOfQuestion >= day.Date && timeOfQuestion < day.Date.AddDays(1)) {
   ...
 }

使用像endOfDays = time.AddDays(1).AddMilliseconds(-1)这样的构造函数是很危险的:请注意,day.Date.AddMilliseconds(999.5)-double值-应该在当天 * 之内 *。

相关问题