using System.Globalization;
private static TimeZoneInfo OsloTimeZone { get; } = TimeZoneInfo.FindSystemTimeZoneById("Europe/Oslo");
public static void Main()
var now = new DateTime(2022, 10, 30, 10, 00, 00);
var auctionDeliveryStartUtc = now.Date.AddDays(1).ToUtc(sourceTimeZone: OsloTimeZone);
var auctionDeliveryEndUtc = now.Date.AddDays(2).ToUtc(sourceTimeZone: OsloTimeZone).AddHours(-1);
Console.WriteLine(auctionDeliveryStartUtc);
Console.WriteLine(auctionDeliveryEndUtc);
public static class DateTimeExtensions
public static DateTime ToTimeZone(this DateTime date, TimeZoneInfo sourceTimeZone, TimeZoneInfo destinationTimeZone)
var dateUnspecified = DateTime.SpecifyKind(date, DateTimeKind.Unspecified);
return TimeZoneInfo.ConvertTime(dateUnspecified, sourceTimeZone, destinationTimeZone);
public static DateTime ToUtc(this DateTime date, TimeZoneInfo sourceTimeZone)
return date.ToTimeZone(sourceTimeZone, TimeZoneInfo.Utc);
public static bool IsWeekend(this DateTime dateTime)
return dateTime.DayOfWeek == DayOfWeek.Saturday || dateTime.DayOfWeek == DayOfWeek.Sunday;
public static string ToLogDateTimeFormat(this DateTime dateTime)
return dateTime.ToString(StringExtensions.WideDateHourMinuteSecondFormat, CultureInfo.InvariantCulture);
public static string ToLogDateFormat(this DateTime dateTime)
return dateTime.ToString(StringExtensions.WideDateFormat, CultureInfo.InvariantCulture);
public static string ToLogDateFormat(this DateOnly date)
return date.ToString(StringExtensions.WideDateFormat, CultureInfo.InvariantCulture);
public static string ToTightDateTimeFormat(this DateTime dateTime)
return dateTime.ToString(StringExtensions.TightDateTimeFormat, CultureInfo.InvariantCulture);
public static string ToFormattedString(this DateTime dateTime, string format)
return dateTime.ToString(format, CultureInfo.InvariantCulture);
public static class StringExtensions
internal const string DayFirstDateFormat = "dd/MM/yyyy";
internal const string WideDayFirstDateHourMinuteFormat = "dd/MM/yyyy HH:mm";
internal const string TightDateFormat = "yyyyMMdd";
internal const string TightDateHourMinuteFormat = "yyyyMMddHHmm";
internal const string TightDateTimeFormat = "yyyyMMddHHmmss";
internal const string HourMinuteSecondFormat = @"hh\:mm\:ss";
internal const string WideDateHourMinuteFormat = "yyyy-MM-dd HH:mm";
internal const string WideDateFormat = "yyyy-MM-dd";
internal const string WideDateHourMinuteSecondFormat = "yyyy-MM-dd HH:mm:ss";