Actually you don't have to, time will be saved in Local time when adding list item, so you could just specify time value like this:
listItem["DateTime"] = utc;
Another option would be to retrieve SharePoint time zone and explicitly convert time into Local time using .NET Framework capabilities when saving list item as demonstrated below.
//1.Retrieve SharePoint TimeZone
var spTimeZone = context.Web.RegionalSettings.TimeZone;
context.Load(spTimeZone);
context.ExecuteQuery();
//2.Resolve System.TimeZoneInfo from Microsoft.SharePoint.Client.TimeZone
var fixedTimeZoneName = sptimeZone.Description.Replace("and", "&");
var timeZoneInfo = TimeZoneInfo.GetSystemTimeZones().FirstOrDefault(tz => tz.DisplayName == fixedTimeZoneName);
//3.Convert time
listItem["DateTime"] = TimeZoneInfo.ConvertTimeFromUtc(utc, timeZoneInfo);