public static void Main()
var utcNow = DateTime.UtcNow;
Console.WriteLine(utcNow);
var timeZoneId = "Europe/Kaliningrad";
var timeZone = TZConvert.GetTimeZoneInfo(timeZoneId);
Console.WriteLine(timeZone.Id);
var localTime = TimeZoneInfo.ConvertTimeFromUtc(utcNow, timeZone);
Console.WriteLine(localTime);
var localMidnight = localTime.Date;
Console.WriteLine(localMidnight);
var utcMidnight = TimeZoneInfo.ConvertTimeToUtc(localMidnight, timeZone);
Console.WriteLine(utcMidnight);
var storeMinutesOffset = 60 * (utcNow.Hour + timeZone.BaseUtcOffset.Hours) + (utcNow.Minute + timeZone.BaseUtcOffset.Minutes);
var storeCurrentDateTime = utcNow.AddMinutes(storeMinutesOffset);
var result = new DateTime(storeCurrentDateTime.Year, storeCurrentDateTime.Month, storeCurrentDateTime.Day, 0, 0, 0);
Console.WriteLine(result);