private static DateTimeOffset GetEpexDateTimeOffSet(String epexDateTime, TimeZoneInfo timeZone) { //CSV epexDateTime format : 20200123 15:00 // 1. Vi danner dateTime (dato + timer/minutter/sekunder/millisekunder) DateTime dateTime = DateTime.ParseExact(epexDateTime.Substring(0, 8), "yyyyMMdd", CultureInfo.InvariantCulture); // 2. Vi danner dateTimeOffset ud fra DateTime samt de offset vores grid/market country definerer var offset_start = new DateTimeOffset(dateTime, timeZone.GetUtcOffset(dateTime)); // 3. Justere DateTime med start tidspunkt på dagen og danner TimePeriod int hour = GetTimeSlot(epexDateTime.Substring(9, 2), "hour"); int minute = GetTimeSlot(epexDateTime.Substring(12, 2), "minute"); return(offset_start.At(TimeSpan.FromHours(hour), timeZone).AddMinutes(minute)); }
/// <summary> /// Increases supplied <see cref="DateTime"/> for 7 days ie returns the Next Week. /// </summary> public static DateTimeOffset MonthAfter(this DateTimeOffset @this) { var year = @this.Month == 12 ? @this.Year + 1 : @this.Year; var month = @this.Month == 12 ? 1 : @this.Month + 1; var firstDayOfNextMonth = @this.At(year, month, 1); var lastDayOfPreviousMonth = firstDayOfNextMonth.EndOfMonth().Day; var day = @this.Day > lastDayOfPreviousMonth ? lastDayOfPreviousMonth : @this.Day; return(new DateTimeOffset(firstDayOfNextMonth.Year, firstDayOfNextMonth.Month, day, firstDayOfNextMonth.Hour, firstDayOfNextMonth.Minute, firstDayOfNextMonth.Second, @this.Offset)); }