Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.26;
Скачать: CL | DM;

Вниз

Независимая дата и время   Найти похожие ветки 

 
Goida ©   (2004-01-15 11:21) [0]

Как получить дату с временем (31.12.2003 23:59:00) в формате TDateTime независимо от настроек Windows. Если я напишу в качестве разделителей точки, то на машине, где используются слэши дата в текстовом формате не будет понята и переведена. Этого нужно избежать. Как это сделать?


 
Ega23 ©   (2004-01-15 11:30) [1]

IncSecond


 
alex_*** ©   (2004-01-15 11:33) [2]

в формате TDateTime нет точек, запятых и т.д. и этот формат не зависим от настроек Windows. А в случае текстовых представлений даты/времени надо самому определить в каком формате ты будешь передавать и проверять DateSeparator и TimeSeparator перед конвертацией в TDateTime.


 
Goida ©   (2004-01-15 11:33) [3]


> Ega23
> IncSecond

Хочешь сказать, что взяв нулевую дата (или текущую) по секундам довести ее до кондиции?!


 
Goida ©   (2004-01-15 11:35) [4]


> alex_***

Это понятно. Я думал может есть другой, более рациональный способ?


 
alex_*** ©   (2004-01-15 11:38) [5]

не встречал.


 
Романов Р.В. ©   (2004-01-15 11:38) [6]

formatdatetime("dd.mm.yy hh:nn:ss", Date);


 
KosilkA ©   (2004-01-15 11:39) [7]

var time:_systemtime;
begin
GetLocalTime(time);
showmessage(inttostr(time.wDay)+"."+inttostr(time.wMonth)+"."+inttostr(time.wYear)+" "+inttostr(time.wHour)+":"+inttostr(time.wMinute)+":"+inttostr(time.wSecond));


 
McSimm ©   (2004-01-15 11:40) [8]

В зависимости от потребностей.

Можно временно задать свой формат:
OldShortDateFormat:=ShortDateFormat;
try
ShortDateFormat:="...."; // указать свой формат (см. справку Date-Time Format Strings)
Result:=StrToDateTime(ADate);
finally
ShortDateFormat:=OldShortDateFormat;
end

Или можно построить TDateTime с помощью EncodeDateTime()


 
Ega23 ©   (2004-01-15 11:40) [9]

Нет.


 
Ega23 ©   (2004-01-15 11:42) [10]


> Хочешь сказать, что взяв нулевую дата (или текущую) по секундам
> довести ее до кондиции?!

Нет, не так.

dt:=IncSecond(EncodeDate(2004,01,01),-1);


 
Goida ©   (2004-01-15 12:00) [11]

Думаю, что это лучше всего:

var
MyDate: TSystemTime;
Date: TDateTime;
...
with MyDate do
begin
wYear := 2003;
wMonth := 12;
wDay := 31;
wHour := 23;
wMinute := 59;
wSecond := 0
end;
Date := SystemTimeToDateTime(MyDate);


Вот так и получу я свою дату. Сразу.


 
McSimm ©   (2004-01-15 12:04) [12]

Date := EncodeDateTime(2003, 12, 31, 23, 59, 11);


 
Goida ©   (2004-01-15 12:07) [13]


> McSimm

Еще бы я был не согласен.


 
Goida ©   (2004-01-15 12:09) [14]


> McSimm © (15.01.04 12:04) [12]
> Date := EncodeDateTime(2003, 12, 31, 23, 59, 11);

Поспешил с похвалами. Такой ф-ции нет. Ты наверно сам ее написал?


 
McSimm ©   (2004-01-15 12:13) [15]

Unit DateUtils.
Извиняюсь, ее вероятно небыло в D5.

Я не помню уже что там есть или нет, можно попробовать
Date := EncodeDate(2003, 12, 31) + EncodeTime(23, 59, 11);


 
Goida ©   (2004-01-15 12:21) [16]


> McSimm

Все поехало. Спасибо.
PS: На счет юнита твои домысля верны.



Страницы: 1 вся ветка

Текущий архив: 2004.01.26;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
6-83226
AndreySoft
2003-10-21 20:14
2004.01.26
Как программно установить IP-адрес


1-83150
FREEMAN
2004-01-15 11:54
2004.01.26
Копирование файлов по битам


1-83164
Tornado
2004-01-15 15:26
2004.01.26
ActionManager


3-83115
Grotesk
2003-12-28 17:45
2004.01.26
BatchMove: аналог для ADO


14-83262
passlight
2004-01-05 11:30
2004.01.26
Трудолюбие — это опасный миф