Skip to content

Instantly share code, notes, and snippets.

@accidentaldeveloper
Created March 8, 2016 02:16
Show Gist options
  • Save accidentaldeveloper/809b3854e561df58db26 to your computer and use it in GitHub Desktop.
Save accidentaldeveloper/809b3854e561df58db26 to your computer and use it in GitHub Desktop.
Calculate next occurrence of an event
<Query Kind="Program" />
void Main()
{
const int NumberOfDaysInAWeek = 7;
var firstRun = new DateTime(2016, 3, 2, 3, 25, 30);
var ocurrenceInterval = TimeSpan.FromDays(2 * NumberOfDaysInAWeek);
var now = new DateTime(2016, 03, 07);
var next = CalculateNextEventOccurrence(firstRun, now, ocurrenceInterval);
next.Dump();
}
// Define other methods and classes here
private DateTime CalculateNextEventOccurrence(DateTime firstOcurrence, DateTime referenceValue, TimeSpan ocurrenceInterval)
{
checked
{
var difference = referenceValue - firstOcurrence;
var ocurrenceIntervalTicks = ocurrenceInterval.Ticks;
var nextOcurrenceNumber = (long)Math.Ceiling((double)difference.Ticks/ocurrenceIntervalTicks);
var nextOcurrence = firstOcurrence.AddTicks(ocurrenceIntervalTicks * nextOcurrenceNumber);
return nextOcurrence;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment