В моем проекте мне нужно рассчитать даты повторяющихся событий. Вначале у меня есть только дата/время начала и информация о том, как это событие должно повторяться:
Код: Выделить всё
Every Day
Every Week
Every 2 Weeks
Every 3 Weeks
Every Month
Every 2 Months
...
Как правильно это сделать? Он должен корректно работать с различными часовыми поясами и настройками перехода на летнее время. Я думаю, мне следует просто добавить дни/недели/месяц к локальному значению DateTime, а затем преобразовать его в UTC. Но я не уверен в этом. Что произойдет, если я добавлю несколько дней, и это будет время, когда нам нужно будет перевести наши часы на один час вперед. В этом случае этого времени не будет.
Ниже приведен код, который я написал, но я не уверен, что он работает правильно в каждом случае:
Код: Выделить всё
private static List FindOccurrences(DateTime localStart, Repeat repeat, int occurrences)
{
var result = new List { localStart };
switch (repeat)
{
case Repeat.Daily:
for (int i = 1; i
Подробнее здесь: [url]https://stackoverflow.com/questions/26362838/correct-way-to-calculate-recurring-dates-in-c-sharp[/url]