Quote
1) дату начала текущей недели
День недели по конкретной дате определяется функцией DayOfTheWeek()
Quote
2) дату начала текущего месяца
Исходя из текущей даты: первое число месяца, а месяц определяется функцией MonthOfTheYear()
3) Не знаю такой функции. Но давайте тогда напишем её
Code
function NewYearDate(const AnYear: TDateTime): TDate;
var S: string;
begin
S:=DateToStr(AnYear);
S:=Copy(S, Length(S) - 4, 4); // узнаём год
S:='01.01.' + S;
Result:=StrToDate(S);
end;
Суть последней функции: дату превращаем в строку, берём год, добавляем его в переменную строковую, а перед годом в эту же переменную - первое января. Подправьте меня, если там ошибся, потому что нет Delphi под рукой. Скорей всего, потребуются некоторые вычисления, простейший вариант - получить дату в строку и распарсить её.