Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Алгоритм по формированию времени с помощью 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 часов назад ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо