public static void Main()
var clientTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific/Chatham");
var dateFormatWithTimeZone = "yyyy-MM-dd HH:mm:ss zzz";
var expectedLocalDelivery = new DateTime(2023, 1, 18, 18, 0, 0);
var expectedLocalPickUp = new DateTime(2023, 1, 18, pickUpHours, pickUpMinutes, 0);
var expectedDeliveryDate = new DateTimeOffset(expectedLocalDelivery, clientTimeZone.GetUtcOffset(expectedLocalDelivery));
var expectedPickUpDate = new DateTimeOffset(expectedLocalPickUp, clientTimeZone.GetUtcOffset(expectedLocalPickUp));
Console.WriteLine("Expected Delivery loc: {0}", expectedDeliveryDate.ToString(dateFormatWithTimeZone));
Console.WriteLine("Expected Delivery utc: {0}\n", expectedDeliveryDate.ToUniversalTime().ToString(dateFormatWithTimeZone));
Console.WriteLine("Expected Pick Up loc: {0}\n", expectedPickUpDate.ToString(dateFormatWithTimeZone));
var utcTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(expectedDeliveryDate, "Greenwich Standard Time");
var utcTimePrepared = new DateTimeOffset(utcTime.Year, utcTime.Month, utcTime.Day, 0, 0, 0, utcTime.Offset);
var pickUpAfter = utcTimePrepared.AddHours(pickUpHours).AddMinutes(pickUpMinutes);
Console.WriteLine("Expected Pick Up utc: {0}", expectedPickUpDate.ToUniversalTime().ToString(dateFormatWithTimeZone));
Console.WriteLine("Calculated Pick Up: {0}", pickUpAfter.ToString(dateFormatWithTimeZone));