ObjectPascal
RecodeDate
Function
Change only the date part of a TDateTime variable DateUtils unit
 function RecodeDate ( const SourceDate : TDateTime; const Year, Month, Day : Word ) : TDateTime;
Description
The RecodeDate function allows the Year, Month and Day values of a TDateTime variable to be changed without affecting the time.
Related commands
DecodeDate Extracts the year, month, day values from a TDateTime var.
DecodeDateTime Breaks a TDateTime variable into its date/time parts
DecodeTime Break a TDateTime value into individual time values
EncodeDate Build a TDateTime value from year, month and day values
EncodeDateTime Build a TDateTime value from day and time values
EncodeTime Build a TDateTime value from hour, min, sec and msec values
RecodeTime Change only the time part of a TDateTime variable
ReplaceDate Change only the date part of a TDateTime variable
ReplaceTime Change only the time part of a TDateTime variable
 
Example code : Change the date without changing the time
var
  myDate : TDateTime;

begin
  // Set the date to 29/10/2002 at 12:34:56
  myDate := EncodeDateTime(2002, 10, 29, 12, 34, 56, 0);
  WriteLn('The starting date/time = '+DateTimeToStr(myDate));

  // Now change the date portion without touching the time
  myDate := RecodeDate(myDate, 1957, 2, 18);
  WriteLn('The new      date/time = '+DateTimeToStr(myDate));
end;
Show full unit code
   The starting date/time = 29/10/2002 12:34:56
   The new date/time      = 18/02/1957 12:34:56