Dzień dobry. Mam Problem z GregorianCalendar, ponieważ wydaje mi się że źle zamienia czas.
oto wynik jaki uzyskuje z danych podanych w zadaniu.
John Jack Johnson 08-12-1989
Vincent 04-05-2014
package pl.codegym.task.task19.task1921;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/*
John Johnson
*/
public class Solution {
public static final List<Person> PEOPLE = new ArrayList<>();
public static void main(String[] args) throws IOException {
String fileName = args[0];
String name;
Person person;
DateFormat df = new SimpleDateFormat("MM-dd-yyyy", new Locale("pl", "PL"));
int year;
int month;
int day;
try{
BufferedReader reader = new BufferedReader(new FileReader(fileName));
while(reader.ready()) {
String[] wordList = reader.readLine().split("\\s");
if (wordList.length == 4) {
name = wordList[0];
year = Integer.parseInt(wordList[3]);
month = Integer.parseInt(wordList[2]);
day = Integer.parseInt(wordList[1]);
person = new Person(name, new GregorianCalendar(year, month, day).getTime());
PEOPLE.add(person);
} else if (wordList.length == 5) {
name = wordList[0] + " " + wordList[1];
year = Integer.parseInt(wordList[4]);
month = Integer.parseInt(wordList[3]);
day = Integer.parseInt(wordList[2]);
person = new Person(name, new GregorianCalendar(year, month, day).getTime());
PEOPLE.add(person);
} else if (wordList.length == 6) {
name = wordList[0] + " " + wordList[1] + " " + wordList[2];
year = Integer.parseInt(wordList[5]);
month = Integer.parseInt(wordList[4]);
day = Integer.parseInt(wordList[3]);
person = new Person(name, new GregorianCalendar(year, month, day).getTime());
PEOPLE.add(person);
}
}
reader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
for (Person x : PEOPLE) {
String s = df.format(x.getBirthDate());
System.out.println(x.getName() + " " + s);
}
}
}