How to update the time only in a datetime.
I miss a function eg.:
myfielddatetime = SETTIME([myfielddatetime], '20:16')
Are there any hint?
Well, there is something similar in
dateutils:
RecodeTime()MyDataSet.FieldByName['MyDate'].AsDateTime := RecodeTime(
MyDataSet.FieldByName['MyDate'].AsDateTime,
NewHour, NewMinutes, NewSeconds, NewMilliseconds);
or maybe like this:
var ADateTime: TDateTime;
{. . .}
ADateTime := MyDataSet.FieldByName['MyDate'].AsDateTime;
ADateTime := RecodeTime(
ADateTime,NewHour, NewMinutes, NewSeconds, NewMilliseconds);
MyDataSet.FieldByName['MyDate'].AsDateTime := ADateTime;
or if you insist on using a string:
var
ADateTime: TDateTime;
ATime: TDateTime;
dd, mm, yy,
hh, mn, ss, ms: word;
begin
{. . .}
{ Get date from the field }
ADateTime := MyDataSet.FieldByName['MyDate'].AsDateTime;
{ Get the needed time vars from time string}
ATime := StrToTime('20:16');
DecodeDateTime(ATime, yy, mm, dd, hh, mn, ss, ms);
{ Recode the date with the new time }
ADateTime := RecodeTime(
ADateTime,NewHour, NewMinutes, NewSeconds, NewMilliseconds);
{ And set the field with the new value }
MyDataSet.FieldByName['MyDate'].AsDateTime := ADateTime;
end;
You get the drift, I hope