![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с датой-временем. [D2005]
oleg1963lora © (2010-02-15 12:17:00)Здравствуйте уважаемые Мастера!
Имею две переменных
DateStart : TDateTime;
DateCurr : TDateTime и два компонента
InDate : TDateTimePicker;
InTime : TDateTimePicker;
Присваиваю
DateStart:=InDate.Date;
DateStart:=InTime.Time;
{Проверка показывает правильные значения и даты и времени в DateStart}
Если же присвоить DateCurr:=DateStart то время сохраняется, а дата - нет. В чем моя ошибка?
12 (2010-02-15 15:52:00) [1]
> Куала-Лумпур
ну там же Лумпукул очень дешевый
Ega23 (2010-02-15 15:49:00) [2]
> И все. Достиг результата другой дорогой :-)
> За подсказки всем СПАСИБО!
Цель: Путешествие из Петербурга в Москву.
Ты его достиг другой дорогой, попутно завернув в Нью-Йорк, Сидней и Куала-Лумпур.
Но достиг, это да. :)
oleg1963lora (2010-02-15 15:43:00) [3]Вобщем выкрутился. Смотрите, что вышло.
type DateTimeArray = record
Date : string;
Time : string;
end;
var
Level : array [1..8] of Levels;
DateStart : DateTimeArray;
DateCurr : DateTimeArray;
implementation
procedure TForm1.RunGenerateClick(Sender: TObject);
{Запуск процесса генерации, создания таблиц, установки первоначального времени}
begin
DateStart.Date:=DateToStr(InDate.Date);
DateStart.Time:=TimeToStr(InTime.Time);
DateCurr:=DateStart;
CurrentDate.Text:=DateCurr.Date;
CurrentTime.Text:=DateCurr.Time;
end;
И все. Достиг результата другой дорогой :-)
За подсказки всем СПАСИБО!
Ega23 (2010-02-15 15:34:00) [4]
> DateStart:=InDate.Date + InTime.Time;
Ну или так.
Ega23 (2010-02-15 15:32:00) [5]
> ДатаСтарт:=Дата+время. Оказывается не все так просто
Просто нужно чётко понимать, что такое тип данных TDateTime.
Целая часть - количество дней, прошедших с 30.12.1899
Дробная чать - часы-минуты-секунды-миллисекунды
Поэтому рецепт таков:
Кидаем на форму 2 TDateTimePicker. Одному тип (или что там?) pkDate, второму - pkTime (вроде так, точно не помню).
Финальная дата будет выглядеть
var
dt : TDateTime
begin
dt := DateTimePicker1.Date + (DateTimePicker2.DateTime - Trunc(DateTimePicker2.DateTime));
ShowMessage(FormatDateTime('dd.mm.yyyy hh:nn:ss', dt);
end;
12 (2010-02-15 15:28:00) [6]
> DateStart:=InDate.Date;
> DateStart:=InTime.Time;
да, ибо написали же
> потому что вторым присваиванием затираешь значение присвоенное
> первым...
но я о другом :)
Ладно, проехали
так вот надо
DateStart:=InDate.Date + InTime.Time;
oleg1963lora (2010-02-15 15:19:00) [7]Т.Е. конструкция такого вида в принципе не верна
DateStart:=InDate.Date;
DateStart:=InTime.Time; ? И сохранится последнее(то есть время), что я и наблюдаю.Дата временами вылезает установленная по умолчанию -1899 год
А я-то по наивности думал, что можно ввести что-то вроде
ДатаСтарт:=Дата+время. Оказывается не все так просто
12 (2010-02-15 14:49:00) [8]
> Разве весь компонент не копируется?
нет
d1.DateTime:=strtodatetime('01.02.2010 14:12');
d2.DateTime:=strtodatetime('11.03.2009 11:22');
showmessage(datetimetostr(d1.DateTime)+' -----'+datetimetostr(d2.DateTime));
d1:=d2;
// выбираем любые даты в компонентах на форме,
но все равно все равно одному.
Думаю, кстати, что где-то Вы уже потеряли указатель таким же образом
showmessage(datetimetostr(d1.DateTime)+' -----'+datetimetostr(d2.DateTime));
Ega23 (2010-02-15 14:30:00) [9]Обрати внимание, что у тебя стоит в TDateTimePicker.Date
oleg1963lora (2010-02-15 14:09:00) [10]Может я неправильно выразился.
InDate.Date = '01.02.2010'
InTime.Time = '13:00'.
DateStart содержит правильные значения, а в DateCurr получаю
'27.01.2010' и '13:00' соответствено. Как такое может быть? Разве весь компонент не копируется? Что-то я не догоняю((
Ega23 (2010-02-15 12:34:00) [11]
> что-то не очень-то верится...
Он DefaultDate просто не поменял.
{RASkov} (2010-02-15 12:32:00) [12]> [0] oleg1963lora (15.02.10 12:17)
> { Проверка показывает правильные значения и даты и времени в DateStart }
Если же присвоить DateCurr:=DateStart то время сохраняется, а дата - нет.
что-то не очень-то верится...
{RASkov} (2010-02-15 12:24:00) [13]потому что вторым присваиванием затираешь значение присвоенное первым....