![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Алгоритм по формированию времени с помощью DateTimeToString
WebSQLNeederr © (2008-06-28 22:13:00)Прошу помочь с алгоритмом.
Задача - необходимо сформировать массив времен начиная от текущего времени необходимо получить время час назад, час вперед ... потом два часа назад, два часа вперед ... и так скажем на 100 или 1000 шагов ... У кого есть какие соображения как это реализовать?
WebSQLNeederrr (2008-06-29 08:42:00) [1]Удалено модератором
Примечание: Mat
Тын-Дын (2008-06-29 03:32:00) [2]Удалено модератором
Германн (2008-06-29 02:58:00) [3]Удалено модератором
Тын-Дын (2008-06-29 02:40:00) [4]Удалено модератором
Примечание: Обсуждение модерирования
Германн (2008-06-29 02:37:00) [5]Удалено модератором
Тын-Дын (2008-06-29 02:32:00) [6]Удалено модератором
Тын-Дын (2008-06-29 02:24:00) [7]Удалено модератором
Johnmen (2008-06-29 02:14:00) [8]Удалено модератором
Германн (2008-06-29 01:40:00) [9]Удалено модератором
Тын-Дын (2008-06-28 22:38:00) [10]Удалено модератором
WebSQLNeederr (2008-06-28 22:35:00) [11]
> Тын-Дын © (28.06.08 22:26) [7]
Твой алгоритм работает на ура! Ты настоящий мастер Делфи!!! ... А я тут сидел заморачивался с циклами а тут оказывается пару строк!
Еще раз спасибо за код!
WebSQLNeederr (2008-06-28 22:29:00) [12]
> Тын-Дын © (28.06.08 22:26) [7]
Спасибо, буду пробовать.
Тын-Дын (2008-06-28 22:26:00) [13]uses DateUtils
function IncYear(const AValue: TDateTime;
const ANumberOfYears: Integer = 1): TDateTime;
// function IncMonth is in SysUtils
function IncWeek(const AValue: TDateTime;
const ANumberOfWeeks: Integer = 1): TDateTime;
function IncDay(const AValue: TDateTime;
const ANumberOfDays: Integer = 1): TDateTime;
function IncHour(const AValue: TDateTime;
const ANumberOfHours: Int64 = 1): TDateTime;
function IncMinute(const AValue: TDateTime;
const ANumberOfMinutes: Int64 = 1): TDateTime;
function IncSecond(const AValue: TDateTime;
const ANumberOfSeconds: Int64 = 1): TDateTime;
function IncMilliSecond(const AValue: TDateTime;
const ANumberOfMilliSeconds: Int64 = 1): TDateTime;
Либо простейшие операции такого рода:
procedure TForm1.Button3Click(Sender: TObject);
var
Day: Double;
Hour: Double;
Minute: Double;
Second: Double;
mSec: Double;
dt: TDateTime;
begin
Day := 1;
Hour := Day/24;
Minute := Hour/60;
Second := Minute/60;
mSec := Second/1000;
dt := now;
ShowMessage(
FormatDateTime('dd.mm.yyyy hh:nn:ss.zzz',dt)+#13#10+
FormatDateTime('dd.mm.yyyy hh:nn:ss.zzz',Now-Day*10));
end;
Игорь Шевченко (2008-06-28 22:26:00) [14]
> или вообще что посоветуете?
посоветую подумать над функциями из DateUtils
WebSQLNeederr (2008-06-28 22:18:00) [15]
> > Попробовал сделать что то типа DateTimeToString(st, 'h+1:
>
> > n:s', Now());
>
>
> это что?
Это я пытался на 1 час сместить :)
WebSQLNeederr (2008-06-28 22:17:00) [16]Вот сижу сейчас пробую написать алгоритм тупого анализа времени - то есть смещаем время на 1 час и начинаем анализ если время до 24 часов значит так и формируем время а если перешагнуло то нужно сместить еще и счетчик даты ... потом анализ даты по месяцам в 30 или 31 или 28 периодов ... потом анализ по месяцам в переполнении по 12 ... Короче уже замучался ...
Может у кого то есть рабочий алгоритм или вообще что посоветуете?
Loginov Dmitry (2008-06-28 22:17:00) [17]> Попробовал сделать что то типа DateTimeToString(st, 'h+1:
> n:s', Now());
это что?
> В идеале хотелось бы что то типа SmestitDateTime(5) - сместит
> время на 5 часов, или SmestitDateTime(-70) сместит на 70
> часов назад ...
DateUtils.IncHour()
Loginov Dmitry (2008-06-28 22:15:00) [18]> У кого есть какие соображения как это реализовать?
с помощью цикла, операции сложения и вычитания.
WebSQLNeederr (2008-06-28 22:13:00) [19]Попробовал сделать что то типа DateTimeToString(st, 'h+1:n:s', Now());
Но это не дает эффекта. Может это вообще как то по другому реализовать можно без DateTimeToString ?
В идеале хотелось бы что то типа SmestitDateTime(5) - сместит время на 5 часов, или SmestitDateTime(-70) сместит на 70 часов назад ...