Avevo la necessità di spedire una newsletter settimanalmente da un sito web. Questa andava pianificata ed eseguita in automatico ogni lunedì della settimana ad una determinata ora.
Non avendo la possibilità di mettere qualcosa sul server ma avendo a disposizione solo il framework, mi sono imbattuto su questo articolo di AspItalia e ho provato ad implementarlo.
L'idea è quella di mettere un oggetto timer nella classe del global asa e con quello controllare il passare del tempo... che potenza asp.net!!!
Mi mancava come ricavare "... prossimo lunedì... " ed ecco qui come ho fatto (anche se magari qualcuno lo farebbe meglio)
Private Function GetProssimoLunedì() As Date
Dim DteProx As Date
Dim DiffInt As Integer = (CInt([Enum].Parse(GetType(DayOfWeek), _
CType(Now.DayOfWeek, String))) - _
(
CInt([Enum].Parse(GetType(DayOfWeek), "Monday"))))
Select Case DiffInt
Case Is < 0
DteProx = Now.AddDays(Math.Abs(DiffInt))
'Domenica
Case 0
DteProx = Now
'Lunedì
Case Is > 0
DteProx = Now.AddDays(7 - DiffInt)
'Altri giorni
End Select
Return New Date(DteProx.Year, DteProx.Month, DteProx.Day, 22, 0, 0)
End Function