The date-time field type is using DateTimeOffset as the datatype and the value is converted to UTC, that’s the reason that you are getting the UTC version of your time back when you fetch that.
If you instead use var date = currentPerson.Fields.GetValue<DateTimeOffset>("datetimeproperty"); you should get the correct value out with the correct time zone.