Я конечно не шарю особо в C#, просто иногда допиливаю свои алгоритмы в нем, исходя из кусочков кода в сети... но из чего вы взяли, что есть вариант попроще?
Для этого есть много примеров в поиске по форуму:
https://www.google.com.ua/search?num=100&newwindow=1&hl=en&gbv=2&q=как+перевести+дату+в+юникс+тайм+site:zennolab.com&spell=1&sa=X&ved=0ahUKEwi4yZjnjYfVAhXCBZoKHUMnBB4QBQgiKAA&biw=1880&bih=970
Либо в сети гуглите, я вот нашел и использовал вот такой:
https://stackoverflow.com/a/35425123/7355688
Но, как говорится:
юникстайм удобен, когда найдо найти разницу между двумя датами (тупо в секундах считает). Но я не видел в сети примеров как увеличить его на 1 календарный месяц. Но если хотите в нем, то пожалуйста. Вот тот же аналог кода, но с никому нафиг ненужным юникстаймом, и разжеванными комментариями. Я даже закомментировал (заменил) шаг сравнения времени на юникстаймовское.
// Блок 1. Работа с основными переменными
string Date_Start = project.Variables["Date_Start"].Value; // вносим переменные в проект (март 2010)
string Date_Finish = project.Variables["Date_Finish"].Value; // вносим переменные в проект (август 2010)
DateTime Date_Start_classic = Convert.ToDateTime(Date_Start); // преобразуем переменную в структуру "время"
DateTime Date_Finish_classic = Convert.ToDateTime(Date_Finish); // преобразуем переменную в структуру "время"
long Date_Start_classic_unixTime = ((DateTimeOffset)Date_Start_classic).ToUnixTimeSeconds(); // преобразуем переменную в структуру "unix время", но хз нафига
long Date_Finisht_classic_unixTime = ((DateTimeOffset)Date_Finish_classic).ToUnixTimeSeconds(); // преобразуем переменную в структуру "unix время", но хз нафига
// Блок 2. в блоке ниже добавляем построчно месяцы пока не встретим финишную дату, либо не дойдем до 10000 строк (защита от "дурака")
string Diapazon = Date_Start + "\r\n";
int i = 0;
int proverka = 0;
// начало цикла увеличения даты на 1 месяц
while (proverka != 1 & i < 10000) {
i++;
DateTime newDate = Date_Start_classic.AddMonths(i); // здесь идет добавление одного месяца к дате. На unixTime такую операцию не сделать, там можно добавлять секунды, но не календарный месяц (в месяцах разное количество секунд\дней).
string newDate2 = newDate.ToString("MMMM yyyy"); // здесь можно настроить вывод в любом удобном формате, для этого просто замените "MMMM yyyy" на "dd.MM.yyyy HH:mm:ss" и т.д.
newDate2 = newDate2.ToLower(); // поскольку C# выдает дату в формате «Март 2010», то переводим в нижний регистр («март 2010»)
// старый шаг проверки ниже я закомментировал, вместо него ниже идет проверки по unixTime
/*
if (newDate2 == Date_Finish) // если наша текущая увеличенная дата равна финальной дате, то устанавливаем переменной "proverka" значение 1, и это остановит цикл увеличения даты
{
proverka = 1;
}
*/
long newDate_unixTime = ((DateTimeOffset)newDate).ToUnixTimeSeconds(); // преобразуем переменную в структуру "unix время", и будем сравнивать по ней
if (newDate_unixTime >= Date_Finisht_classic_unixTime) // если наша текущая увеличенная дата в unix-формате больше\равно финальной даты (в том же unix-формате) то устанавливаем переменной "proverka" значение 1, и это остановит цикл увеличения даты
{
proverka = 1;
}
Diapazon += newDate2 + "\r\n";
}
// конец цикла увеличения даты на 1 месяц
// возвращаем наш список-диапазон в виде переменной на несколько строк
return Diapazon;