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

Вниз

Работа с датой-временем.   Найти похожие ветки 

 
oleg1963lora   (2010-02-15 12:17) [0]

Здравствуйте уважаемые Мастера!
Имею две переменных

DateStart : TDateTime;
DateCurr  : TDateTime и два компонента

InDate : TDateTimePicker;
InTime : TDateTimePicker;
Присваиваю
 DateStart:=InDate.Date;
 DateStart:=InTime.Time;
{Проверка показывает правильные значения и даты и времени в DateStart}
Если же присвоить DateCurr:=DateStart то время сохраняется, а дата - нет. В чем моя ошибка?


 
{RASkov} ©   (2010-02-15 12:24) [1]

потому что вторым присваиванием затираешь значение присвоенное первым....


 
{RASkov} ©   (2010-02-15 12:32) [2]

> [0] oleg1963lora   (15.02.10 12:17)
> {Проверка показывает правильные значения и даты и времени в DateStart}
Если же присвоить DateCurr:=DateStart то время сохраняется, а дата - нет.

что-то не очень-то верится...


 
Ega23 ©   (2010-02-15 12:34) [3]


> что-то не очень-то верится...


Он DefaultDate просто не поменял.


 
oleg1963lora   (2010-02-15 14:09) [4]

Может я неправильно выразился.
InDate.Date = "01.02.2010"
InTime.Time = "13:00".
DateStart содержит правильные значения, а в DateCurr получаю
"27.01.2010" и "13:00" соответствено. Как такое может быть? Разве весь компонент не копируется? Что-то я не догоняю((


 
Ega23 ©   (2010-02-15 14:30) [5]

Обрати внимание, что у тебя стоит в TDateTimePicker.Date


 
12 ©   (2010-02-15 14:49) [6]


> Разве весь компонент не копируется?

нет

  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));


 
oleg1963lora   (2010-02-15 15:19) [7]

Т.Е. конструкция такого вида в принципе не верна

DateStart:=InDate.Date;
DateStart:=InTime.Time; ? И сохранится последнее(то есть время), что я и наблюдаю.Дата временами вылезает установленная по умолчанию -1899 год
А я-то по наивности думал, что можно ввести что-то вроде
ДатаСтарт:=Дата+время. Оказывается не все так просто


 
12 ©   (2010-02-15 15:28) [8]


> DateStart:=InDate.Date;
> DateStart:=InTime.Time;


да, ибо написали же

> потому что вторым присваиванием затираешь значение присвоенное
> первым...

но я о другом :)
Ладно, проехали

так вот надо
DateStart:=InDate.Date + InTime.Time;


 
Ega23 ©   (2010-02-15 15:32) [9]


> ДатаСтарт:=Дата+время. Оказывается не все так просто


Просто нужно чётко понимать, что такое тип данных 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;


 
Ega23 ©   (2010-02-15 15:34) [10]


> DateStart:=InDate.Date + InTime.Time;


Ну или так.


 
oleg1963lora   (2010-02-15 15:43) [11]

Вобщем выкрутился. Смотрите, что вышло.

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:49) [12]


> И все. Достиг результата другой дорогой :-)
> За подсказки всем СПАСИБО!


Цель: Путешествие из Петербурга в Москву.
Ты его достиг другой дорогой, попутно завернув в Нью-Йорк, Сидней и Куала-Лумпур.
Но достиг, это да.  :)


 
12 ©   (2010-02-15 15:52) [13]


> Куала-Лумпур

ну там же Лумпукул очень дешевый



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

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

Наверх




Память: 0.5 MB
Время: 0.073 c
4-1235052387
GanibalLector
2009-02-19 17:06
2010.08.27
WMI & Delphi


15-1266355805
Юрий
2010-02-17 00:30
2010.08.27
С днем рождения ! 17 февраля 2010 среда


2-1265701817
Starraider
2010-02-09 10:50
2010.08.27
Abstract Error


2-1266579449
pavelkq
2010-02-19 14:37
2010.08.27
Генерация библиотеки COM-модуля.


15-1270632270
Валерий М.
2010-04-07 13:24
2010.08.27
MySQl Server 4