DateTimeKind.Utc dates become DateTimeKind.Local when parsed, time is parsed correctly.
I guess the problem is around here.
The date should probably be constructed as either Local or Utc depending on the value of utc boolean.
The constructed data should then be converted to the other format, only if _params.UseUTCDateTime differs from utc.
Thanks! :)