Непростая какая задача попалась, прошу вашей помощи по ее решению.
При форматировании даты в переменную date записывается нужный формат, но при выводе на консоль выводится полная дата, а не так которая нужна по условию задачи.
package com.javarush.task.task17.task1710;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/*
CRUD
*/
public class Solution {
public static List<Person> allPeople = new ArrayList<Person>();
static {
allPeople.add(Person.createMale("Иванов Иван", new Date())); //сегодня родился id=0
allPeople.add(Person.createMale("Петров Петр", new Date())); //сегодня родился id=1
}
public static void main(String[] args) throws ParseException {
//start here - начни тут
SimpleDateFormat nDate = new SimpleDateFormat("dd/MM/yyyy",Locale.ENGLISH);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-M-yyyy",Locale.ENGLISH);
Date d = nDate.parse(args[3]);
String date = dateFormat.format(d);
String name = args[1];
String sex = args[2];
Date bd = dateFormat.parse(date);
int id = Integer.parseInt(args[4]);
if (args[0].equals("-c")){
if (sex.equals("м")){
allPeople.add(Person.createMale(name,bd));
}
else if (sex.equals("ж")){
allPeople.add(Person.createFemale(name,bd));
}
for (Person allPerson : allPeople) {
System.out.println(allPerson);
}
}
else if (args[0].equals("-u")){
allPeople.get(id).setName(name);
if (sex.equals("м")) allPeople.get(id).setSex(Sex.MALE);
else if (sex.equals("ж")) allPeople.get(id).setSex(Sex.FEMALE);
allPeople.get(id).setBirthDate(bd);
for (Person allPerson : allPeople) {
System.out.println(allPerson);
}
}
else if (args[0].equals("-d")){
allPeople.get(id).setName(null);
allPeople.get(id).setSex(null);
allPeople.get(id).setBirthDate(null);
for (Person allPerson : allPeople) {
System.out.println(allPerson);
}
}
else if (args[0].equals("-i")){
System.out.println(allPeople.get(id));
}
}
}
"При форматировании даты в переменную date записывается нужный формат"В переменную String date - записывается строка. Не формат даты, не дата, именно строка. В переменную Date bd - записывается дата (датавремя на самом деле), и только дата. Формат вывода даты не записывается. Во всех person - дата, без форматирования. Когда в консоль выводится дата, то Вы должны форматировать этот вывод, иначе выведется в формате по умолчанию для системной локали. См. Date.toString() Т.е. Вам надо либо переопределить Person.toString(), чтобы использовать нужное Вам форматирование даты, либо написать функцию printPerson(Person p), и форматировать вывод там.