将日期时间设置为 23:59:59



有人可以解释我为什么要这样做:

        public virtual ActionResult RecupererVehicules([DataSourceRequest] DataSourceRequest request, String dateMin, String dateMax)
    {
        // Création des dates
        DateTime min = DateTime.Parse(dateMin);
        DateTime max = DateTime.Parse(dateMax);
        max.AddHours(23).AddMinutes(59).AddSeconds(59);
        return Json(Models.Vehicule.getVehiculesDates(min,max));
    }

给我这个:

日期敏 "2016-06-26"
日期最大 "2016-07-06"
分钟 {26/06/2016 00:00:00}
max {06/07/2016 00:00:00} <-- 为什么我没有 23:59:59 ?

如果有人有答案,我会很乐意倾听。

你必须通过

max = max.AddHours(23).AddMinutes(59).AddSeconds(59);

而不是

max.AddHours(23).AddMinutes(59).AddSeconds(59);

否则,将计算正确的日期,但未分配。

或者,您也可以通过以下方式添加此时间跨度

.AddDays(1).AddSeconds(-1)

DateTime是一个不可变的struct。因此,您无法更改 DateTime 实例的值。如果向DateTime实例添加或减去某些内容,则会得到一个返回结果值的新实例。

所以你的线

max.AddHours(23).AddMinutes(59).AddSeconds(59);

不会更改max,但每个Add*调用都会返回一个新的DateTime。您需要再次将结果值分配给max

max = max.AddHours(23).AddMinutes(59).AddSeconds(59);

你必须像这样将值分配给max变量

max = max.AddHours(23).AddMinutes(59).AddSeconds(59);

其他人已经指出了如何解决这个问题,但也许你应该确切地知道发生了什么,并对术语有所了解。

类型 DateTime 是不可变的。这意味着一旦将DateTime变量初始化为值,就永远无法再次更改它。

DateTime上的所有方法(例如。 AddDaysAddHours等)返回一个新DateTime

这是来自 Microsoft 源的 Add 方法的实际实现:

public DateTime AddTicks(long value) 
{
   long ticks = InternalTicks;
   return new DateTime((UInt64)(ticks + value) | InternalKind);
}

正如其他人指出的那样,您需要将操作的返回值分配给同一个变量max或另一个变量:

max = max.Date.AddHours(23).AddMinutes(59).AddSeconds(59);

最好先使用max.Date以防发送的日期未设置为午夜。

使用 DateTime.Add() 方法将时间添加到日期。

DateTime date =  DateTime.Parse(dateMax);
TimeSpan time = new TimeSpan(36, 0, 0, 0);
DateTime combined = date.Add(time);
Console.WriteLine("{0:dddd}", combined);

相关内容

  • 没有找到相关文章

最新更新