| Vitalianez | Дата: Вторник, 01.11.2011, 18:56 | Сообщение # 1 |
|
Ранг 1
Группа: Пользователи
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
| Здравствуйте. Подскажите какими функциями даты/времени (переменных формата TDateTime) можно быстро определить: 1) дату начала текущей недели 2) дату начала текущего месяца 3) дату начала текущего года
или необходимы вычисления и преобразования?
|
| |
| |
| skycar | Дата: Вторник, 01.11.2011, 21:47 | Сообщение # 2 |
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
| 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 под рукой. Скорей всего, потребуются некоторые вычисления, простейший вариант - получить дату в строку и распарсить её.
Сообщение отредактировал skycar - Вторник, 01.11.2011, 21:57 |
| |
| |
| Vitalianez | Дата: Пятница, 04.11.2011, 15:02 | Сообщение # 3 |
|
Ранг 1
Группа: Пользователи
Сообщений: 4
Награды: 0
Репутация: 0
Статус: Offline
| Нашел библиотеку DateUtils вот что у меня получилось (dold - искомая дата) 1) DecodeDateWeek(Now, AYear, AWeekOfYear, ADayOfWeek); dold:=EncodeDateWeek(AYear, AWeekOfYear, 1); 2) DecodeDate(Now, AYear, AMonth, ADay); dold:=EncodeDate(AYear, AMonth, 1); 3) DecodeDate(Now, AYear, AMonth, ADay); dold:=EncodeDate(AYear, 1, 1);
|
| |
| |