public static void Main()
var now = DateTimeOffset.UtcNow;
var tomorrow = now.AddDays(1);
var cPausedUntil = DateTimeOffset.Parse("3/20/2018 00:00:00 -4");
var timezone = "Central Standard Time".ToTimeZoneInfo();
Console.WriteLine(timezone);
Console.WriteLine(timezone.GetUtcOffset(now));
var localDate = timezone.ConvertTime(now).Date;
var pausedUntil = cPausedUntil;
if (timezone.GetUtcOffset(localDate) != pausedUntil.Offset)
pausedUntil = pausedUntil.SwitchTimeZone(timezone);
var pausedUntilDate = timezone.ConvertTime(pausedUntil).Date;
Console.WriteLine($"cPausedUntil: {cPausedUntil}");
Console.WriteLine(pausedUntilDate);
Console.WriteLine(localDate);
Console.WriteLine( pausedUntilDate <= localDate);
public static class Test {
public const string ReportTimeZoneId = "Eastern Standard Time";
public static readonly TimeZoneInfo ReportTimeZone = TimeZoneInfo.FindSystemTimeZoneById(ReportTimeZoneId);
public static TimeZoneInfo GetReportingTimeZoneInfo()
public static DateTimeOffset ToReportingTimeZone(this DateTimeOffset dateTimeOffset)
return ReportTimeZone.ConvertTime(dateTimeOffset);
public static DateTimeOffset ConvertTime(this TimeZoneInfo timeZone, DateTimeOffset dateTimeOffset)
return dateTimeOffset.ToOffset(timeZone.GetUtcOffset(dateTimeOffset));
public static DateTimeOffset ToMidnight(this DateTimeOffset dateTimeOffset)
return dateTimeOffset.Subtract(dateTimeOffset.TimeOfDay);
public static DateTimeOffset SwitchTimeZone(this DateTimeOffset dateTimeOffset, string newTimeZone)
return dateTimeOffset.SwitchTimeZone(newTimeZone.ToTimeZoneInfo());
public static DateTimeOffset SwitchTimeZone(this DateTimeOffset dateTimeOffset, TimeZoneInfo newTimeZone)
return new DateTimeOffset(dateTimeOffset.Ticks, newTimeZone.GetUtcOffset(dateTimeOffset));
public static DateTimeOffset ToEndOfDay(this DateTimeOffset dateTimeOffset)
return dateTimeOffset.ToMidnight().AddHours(23).AddMinutes(59).AddSeconds(59);
public static TimeZoneInfo ToTimeZoneInfo(this string timeZoneID)
timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneID);
timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");