2013-06-21 3 views
0

Я использую время для joda для сравнения массива дат. Моя цель - пройти через массив и посмотреть, какие даты отсутствуют. Я планирую выполнить это, назначив первую переменную в массиве переменной DateTime, а затем подсчитав массив и дату. Если DateTime равен array[x], то и DateTime, и массив увеличится на единицу. Если DateTime не равен массиву (это означает, что дата отсутствует), то DateTime будет увеличиваться на единицу и распечатать дату до тех пор, пока DateTime не станет равным Array[x]. На данный момент, хотя, я просто пытаюсь получить его так, чтобы первая дата (у держателя [2]) была равна DateTime firstDate.Установка DateTime до определенного значения

Мой вопрос заключается в том, как я могу сделать так, чтобы я мог назначить holder[2] на DateTime firstDate? Простое присвоение firstDate - holder[2] возвращает ошибку.

DateTime firstDate = new DateTime(); 
DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyyMMDD"); 
String date = dtf.print(firstDate); 

String fake; 

while ((fake = reader.readLine()) != null) { 
    String [] holder = fake.split(" "); 

    firstDate = holder[2]; //******the issue****** 
    System.out.println(firstdate); 

} 

Важные вещи о моем коде:

  1. Я использую BufferedReader взять информацию из очень большого файла (20GB), поэтому я считывании из текстового файла построчно (и для каждой строки holder[2] дата)

  2. формат даты в текстовом файле в ггггммдд, и я хочу, чтобы сравнить строку, что в строке DateTime (таким образом, первое, что мне нужно сделать, это назначить fi первое значение массива до DateTime, которое, как мне кажется, является моим вопросом).

  3. я правильно настройки Joda Время

+0

Ваш формат содержит только год, месяц и дату. Почему вы не используете 'LocalDate'? –

ответ

1

Если то, что вы имеете в holder[2] является строковым представлением даты в формате «ГГГГММДД», то вам нужно использовать форматировщик вы определили:

firstDate = dtf.parseDateTime(holder[2]);