2013-07-26 6 views
0

В моем проекте я сохраняю все даты в виде строки, например, «27.07.2012» в базе данных. Но теперь появилась ситуация, когда мне нужно получить два даты, а затем проверить месяцы между этими двумя начальными и конечными месяцами.Рассчитать месяцы между двумя месяцами

Например: если начальная дата - 01/01/2013, а в конце месяца - 05/01/2013, я должен получить ответ, например {«Ян», «Фев», «Мар», «Апр», «May»} или {«01», «02», «03», «04», «05»}. Я попробовал коллекции, но получил индекс ошибок за пределами диапазона. Любая помощь приветствуется!

Спасибо! Сара.

+0

Вы можете поделиться своим кодом snippeT? – user1519979

ответ

1

Я полагаю, есть более простой способ сделать это с помощью Linq, но простой цикл будет делать работу:

DateTime start = DateTime.Parse(startString); 
DateTime end = DateTime.Parse(endString); 
List<string> months = new List<string>(); 
while (start.Month <= end.Month) 
{ 
    months.Add(start.ToString("MMM")); 
    start = start.AddMonths(1); 
} 
string output = string.Join(",", months.ToArray()); 

Смотрите эту страницу MSDN для информации о форматировании вывода месяца через ToString(): http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx

+0

Спасибо, что так много! Ты обалденный!! Это полностью сработало для меня :) – SaraCh

+1

Что делать, если начало и конец в том же месяце? – bhs

+0

Вместо этого вы можете проверить 'while (start.Month <= end.Month)'. Фактически, я изменю свой ответ, чтобы отразить это. – Deeko

0

Это берет одну из ваших дат и преобразует ее в нужную строку. Получение месяца это не проблема, и я думаю, вы ошибаетесь из-за конфликта, в котором даты преобразуются в строку и из нее на вашем компьютере.

 string date1 = "05/01/2013"; 
     DateTime date = Convert.ToDateTime(date1, System.Globalization.CultureInfo.InvariantCulture); 
     MessageBox.Show(date.ToString()); 
+0

Спасибо, но код фрагмента в предыдущем ответе мне помог! Еще раз, большое спасибо за ответ мне :) – SaraCh

Смежные вопросы