2014-02-20 34 views
2

到期缓存我使用cache.insert()方法来添加一些数据高速缓存,它使用绝对过期,并在4小时内到期一次。 现在我有一个新的要求,在特定时间到期缓存:早上7点,11点,下午3点,晚上7点。在特定的时间

有没有办法做到这一点?

当前代码:

ctx.Cache.Insert("stmodel", stModel, null, 
       DateTime.Now.AddHours(4), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, OnCachedItemRemoved); 

在此先感谢。

+0

我认为你正在寻找[四舍五入datetime对象(http://stackoverflow.com/questions/1393696/rounding-datetime-objects) –

+0

如何四舍五入日期时间将在此要求帮助? – user1165815

+0

是不是你的问题“如何找到下一个时间四舍五入”? (也是简单的'if'与4个条件可能是足够的,并且比在'postTime'Now.AddHours(4)

回答

2
ctx.Cache.Insert("stmodel", stModel, null, 
      MyClass.getSpecificDateTime(), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, OnCachedItemRemoved); 

public static DateTime getSpecificDateTime() 
    { 
     TimeSpan currentTime = DateTime.Now.TimeOfDay; 
     DateTime newTime = DateTime.Now; 

     if (currentTime.Hours < 7){ 
      newTime = newTime.Date + new TimeSpan(7, 0, 0); 
     }else if (currentTime.Hours < 11){ 
      newTime = newTime.Date + new TimeSpan(11, 0, 0); 
     }else if (currentTime.Hours < 15) { 
      newTime = newTime.Date + new TimeSpan(15, 0, 0); 
     }else if (currentTime.Hours < 19){ 
      newTime = newTime.Date + new TimeSpan(19, 0, 0); 
     }else { 
      newTime = DateTime.Now.AddDays(1); 
      newTime = newTime.Date + new TimeSpan(7, 0, 0); 
     } 

     return newTime; 
    } 
+0

谢谢你的回答 – user1165815