---
url: >-
  /statelake/scripting-reference/functions-and-procedures/datetime-functions/recodetime.md
---

# RecodeTime

The **RecodeTime** function selectively replaces the time portions of a specified **TDateTime** value.

The function converts the date/time **TDateTime** value specified by **AValue**, with the value obtained by changing the hour to **AHour**, the minute to **AMinute**, the second to **ASecond**, and the milliseconds to **AMilliSecond**.

* Valid accepted values for **AHour** range from 0 to 24. If **AHour** is 24, then the values for the minutes, seconds, and milliseconds must all equal zero (0).
* **AMinute** can be a value that ranges from 0 through 59 inclusive.
* **ASecond** can be a value that ranges from 0 through to 59 inclusive.
* **AMilliSecond** can range from 0 to 999 inclusive.

If the values provided by any of these parameters does not represent a valid time, then **RecodeTime** raises an exception error.

**Declaration**: Function RecodeTime(const AValue: TDateTime; const AHour, AMinute, ASecond, AMilliSecond: Word): TDateTime;

An example would be as follows.

```pascal
procedure OnMapEvent(var Value:Variant);
var
  ThatDate, TheDate : TDateTime;
  aHour, aMin, aSec, aMil : word;
begin
  aHour := 16;
  aMin := 30;
  aSec := 30;
  aMil := 500;
  TheDate := EncodeDateTime(2024, 06, 25, 00, 00, 00, 000);
  ThatDate := RecodeTime(TheDate, aHour,  aMin, aSec, aMil);
  LogInfo(FormatDateTime('dd-mm-yyyy hh:nn:ss.zzz', ThatDate));

 //This will produce an error
  aHour := 16;
  aMin := 70;
  aSec := 30;
  aMil := 500;
  ThatDate := RecodeTime(TheDate, aHour,  aMin, aSec, aMil);
  LogInfo(FormatDateTime('dd-mm-yyyy hh:nn:ss.zzz', ThatDate));
  LogInfo('');

end;
```
