2016-11-03 2 views
-3

У меня есть структуры папок типа Год (2016) -> день года (308,309) -> час в день (от 00 до 23). Я хочу знать, как получить все дни и часы между двумя датами между сегодняшним днем ​​и вечером 10 утра. Есть простой способ сделать это?Получите дни года и все часы между двумя датами в C#

My bad! Я не дал достаточной информации. Поэтому я попробовал Span, прежде чем я спросил об этом, и я не хочу получать разные, такие как span.days, часы или минуты, вместо этого я хочу дни года и часы между двумя датами.

как между вчера 10 утра и сегодня он будет 307-й день 10-го часа, 11-го часа и так далее ... до сегодняшнего дня 308-го дня и 9-го часа. Я могу сделать это, перейдя по датам, но я хотел знать, есть ли прямой путь.

+0

Возьмите 2 даты примеров и попробовать его. – mybirthname

+0

Что у вас пробовал до сих пор ??? –

+0

Пожалуйста, начните с некоторых попыток его решения ... Затем покажите нам, где вы застряли –

ответ

1

Я хотел бы создать простой класс для хранения данных, вам нужно:

class DateInfo 
{ 
    public string Year {get;set;} 
    public string DayOfYear{get;set;} 
    public string Hour {get;set;} 
} 

, а затем получить результаты:

DateTime d1 = DateTime.Today.AddDays(-1).AddHours(10); 
DateTime d2 = DateTime.Today.AddHours(9); 
IList<DateInfo> dates = new List<DateInfo>(); 

while (d1 <= d2) 
{ 
    DateInfo dateInfo = new DateInfo() 
    { 
     Year = d1.ToString("yyyy"), 
     DayOfYear = d1.DayOfYear.ToString(), 
     Hour = d1.ToString("HH"), 
    }; 
    dates.Add(dateInfo); 
    d1 = d1.AddHours(1); 
} 
+0

Спасибо, что вы действительно дали какой-то ответ, а не отметили его как дубликат, даже не прочитав весь вопрос. Я делаю некоторые стресс-тесты, используя это, потому что у меня будут папки, подпапки, подобные этому в течение 4 лет. – Avenger789

1

Было бы несколько способов узнать разницу между двумя датами. 2 из них являются следующие

DateTime a = new DateTime(2016, 11, 03, 10, 00, 00); 
DateTime b = DateTime.Now; 
Console.WriteLine(b.Subtract(a).TotalHours); 

Это даст вам общее количество часов между двумя датами Где, как

TimeSpan span = (b - a); 
Console.WriteLine(String.Format("{0} days, {1} hours, {2} minutes, {3} seconds", span.Days, span.Hours, span.Minutes, span.Seconds)); 

Это даст вам информацию в формате, который каждый может понять.

+0

@ Avenger789: Если я понимаю ваш вопрос. Вы можете выбрать первую дату года в качестве '' '' 'DateTime a = new DateTime (2016, 01, 01, 00, 00, 00);' и это даст вам ожидаемый результат с использованием span. И за вчерашний день n вам снова нужно присвоить значение 'b' и сделать тот же самый calc. –

+0

Нет, это не будет. Это все равно даст мне разницу и не перечислит значения между ними. Мне понадобятся все часы/дни/год между указанными датами – Avenger789