Давайте работать через это.Я сделаю это на C #, но, надеюсь, какой-нибудь предприимчивый молодой полиглот сможет сделать перевод для меня и набрать принятый ответ.
DateTime.Today
даст вам сегодняшнюю дату.DateTime.Today.DayOfWeek
возвращает вам сегодняшний «день недели» в виде enum, где воскресенье - 0, а суббота - 6.
Таким образом, мы можем получить самый последний понедельник, используя:
var lastMonday = DateTime.Today.AddDays(1 - (int)DateTime.Today.DayOfWeek);
edit Здесь есть один маленький сбой: если сегодня воскресенье, вы получите завтрашнюю дату , а не прошлый понедельник.Вероятно, существует какой-то хитрый математический способ обойти это, но такой же простой способ добавить дополнительную проверку:
if (lastMonday > DateTime.Today) lastMonday = lastMonday.AddDays(-7);
Тогда нам просто нужно получить десять из них:
var lastTenMondays = from i in Enumerable.Range(0, 10)
select lastMonday.AddDays(i * -7);