2010-10-22 2 views
8

Эй, ребята, я немного потерял, как это сделать. Я знаю, как инициализировать массив со значениями во время объявления, но как бы это сделать с массивом типа DateTime, поскольку для создания даты требуется несколько аргументов?C#: инициализировать массив DateTime

ответ

32

Вы имеете в виду вот это?

DateTime[] dateTimes = new DateTime[] 
{ 
    new DateTime(2010, 10, 1), 
    new DateTime(2010, 10, 2), 
    // etc 
}; 
+0

Это выглядит достаточно просто. Использование нового ключевого слова не вызовет проблемы? – Sinaesthetic

+0

Не помню dateTimes его массив объектов DateTime, поэтому внутри него должен быть экземпляр класса DateTime. – Necronet

+0

ОК, я попробовал без нового ключевого слова. Кажется, что он отлично работает только с {DateTime (x, x, x)} и т. Д. Меня просто беспокоило, что новое ключевое слово будет создавать новые объекты для каждого значения, которое мне не нужно. Благодаря! – Sinaesthetic

5
DateTime [] startDate = new DateTime[5]; 
     startDate[0] = new DateTime(11, 11, 10); 
     startDate[1] = new DateTime(11, 11, 10); 
     startDate[2] = new DateTime(11, 11, 10); 
     startDate[3] = new DateTime(11, 11, 10); 
     startDate[4] = new DateTime(11, 11, 10); 
+2

Последняя строка вызовет ошибку, так как в массиве всего 5 элементов. – Matt

0
DateTime [] "name_of_array"=new Date[int lenght_of_the_array]; //this is the array DateTime 

И тогда, когда вы задаете значение в каждой позиции массива:

DateTime "name_of_each_element_of_the_array"= new DateTime(int value_of_year,int value_of_month, int value_of_day);//this is each element that is added in each position of the array 
0
For example, i want to add a DateTime array of 4 elements:      DateTime[] myarray=new DateTime [4]; //the array is created 
int year, month, day;    //variables of date are created    
for(int i=0; i<myarray.length;i++) 
{ 
    Console.WriteLine("Day"); 
    day=Convert.ToInt32(Console.ReadLine()); 
    Console.WriteLine("Month"); 
    month=Convert.ToInt32(Console.ReadLine()); 
    Console.WriteLine("Year"); 
    year=Convert.ToInt32(Console.ReadLine()); 

    DateTime date =new DateTime(year,month,day); //here is created the object DateTime, that contains day, month and year of a date 

myarray[i]=date; //and then we set each date in each position of the array 
} 
+0

Это не инициализируется в _time объявления_. – namezero

1

Если вы хотите создать массив для промежутка времени между двумя датами вы можете сделать что-то вроде этого:

 timeEndDate = timeStartDate.AddYears(1); // or .AddMonts etc.. 
     rangeTimeSpan = timeEndDate.Subtract(timeStartDate); //declared prior as TimeSpan object 
     rangeTimeArray = new DateTime[rangeTimeSpan.Days]; //declared prior as DateTime[] 

     for (int i = 0; i < rangeTimeSpan.Days; i++) 
     { 
      timeStartDate = timeStartDate.AddDays(1); 
      rangeTimeArray[i] = timeStartDate; 
     } 
Смежные вопросы