2014-02-20 37 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