Hello,
In your script, you can get the value provided by the user using the $Context.GetModifiedPropertyValue method. Also, you can modify the user input using the $Context.SetModifiedPropertyValue method. Here's a short sample script that does what you want:
$attributeName = "adm-CustomAttributeDate1" # TODO: modify me
$dateInput = $Context.GetModifiedPropertyValue("$attributeName")
$date = New-Object "System.DateTime" ($dateInput.Year, $dateInput.Month, $dateInput.Day, 23, 50, 00)
$Context.SetModifiedPropertyValue($attributeName, $date)
Note that a Business Rule that runs the script must be triggered before creating or updating a user.