I hit the time zone problem in System.DateTime in net framework 4.8. I suppose there's a bug in this version of framework.
I ran this piece of code under net framework 4.8 and net 5.0 (+3 is my local time zone).
var dateTime = new DateTime(2021, 3, 3, 12, 13, 14);
var dateTimeKindUtc = new DateTime(2021, 3, 3, 12, 13, 14, DateTimeKind.Utc);
var dateTimeSpecifyKind = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);
var dateTimeToUniversalTime = dateTime.ToUniversalTime();
var timeZoneInfoConvertTimeToUtc = TimeZoneInfo.ConvertTimeToUtc(dateTime);
Console.WriteLine($"{nameof(dateTime)} {dateTime:yyyy-MM-ddTHH:mm:sszzz}");
Console.WriteLine($"{nameof(dateTimeKindUtc)} {dateTimeKindUtc:yyyy-MM-ddTHH:mm:sszzz}");
Console.WriteLine($"{nameof(dateTimeSpecifyKind)} {dateTimeSpecifyKind:yyyy-MM-ddTHH:mm:sszzz}");
Console.WriteLine($"{nameof(dateTimeToUniversalTime)} {dateTimeToUniversalTime:yyyy-MM-ddTHH:mm:sszzz}");
Console.WriteLine($"{nameof(timeZoneInfoConvertTimeToUtc)} {timeZoneInfoConvertTimeToUtc:yyyy-MM-ddTHH:mm:sszzz}");
net framework 4.8 output
dateTime 2021-03-03T12:13:14+03:00
dateTimeKindUtc 2021-03-03T12:13:14+03:00
dateTimeSpecifyKind 2021-03-03T12:13:14+03:00
dateTimeToUniversalTime 2021-03-03T09:13:14+03:00
timeZoneInfoConvertTimeToUtc 2021-03-03T09:13:14+03:00
net 5.0 output
dateTime 2021-03-03T12:13:14+03:00
dateTimeKindUtc 2021-03-03T12:13:14+00:00
dateTimeSpecifyKind 2021-03-03T12:13:14+00:00
dateTimeToUniversalTime 2021-03-03T09:13:14+00:00
timeZoneInfoConvertTimeToUtc 2021-03-03T09:13:14+00:00