Здравствуйте, Гость
Вторник, 21.11.2017, 04:49
Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: Ekz 
Форум » Все о Delphi » Синтаксис » Дата/время, выбор периодов
Дата/время, выбор периодов
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);
 
Форум » Все о Delphi » Синтаксис » Дата/время, выбор периодов
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2017
Хостинг от uCoz