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