Дата рождения, значение по умолчанию

140
28 апреля 2019, 12:00

Нужно создать класс "Human" с полями "Пол", "Дата рождения", "Фамилия", "Имя", "Отчество". Значение по умолчанию для поля "Дата рождения" должно быть = "Текущая дата - 30 лет". Например, сегодня 18.11.2018. По умолчанию дата должна быть 18.11.1988. А при запуске приложения завтра — 19.11.1988 и т.д. Как получить эту дату на языках С++ и Java? Спасибо за помощь.

Answer 1

Как я понимаю, вопрос в том, как получить текущую дату?

Например, так (для C++):

time_t t = time(0);  
struct tm * now = localtime( & t );
cout << now->tm_mday << "."
    << (now->tm_mon + 1) << "."
    << (now->tm_year + 1900) << endl;

Вот вариант вывода в строку, раз это вызывает такие проблемы...

string back30years()
{
    time_t t = time(0);  
    struct tm * now = localtime( & t );
    ostyringstream os;
    os << now->tm_mday << "."
       << (now->tm_mon + 1) << "."
       << (now->tm_year + 1900-30);
    return os.str();
}
Answer 2

Используем java.time.*

public static void main(String[] args) {
    Period period = Period.of(30, 0, 0);
    LocalDate localDate = LocalDate.now();
    LocalDate minus = localDate.minus(period);
    System.out.println("minus = " + minus); // minus = 1988-11-18
}
Answer 3

Представлением даты в Java занимаются классы Date, Calendar и DateFormat. Для работы используются их комбинации.

Date это отдельная дата. Calendar это целое "устройство" для работы со множеством дат. DateFormat удобно использовать для форматирования вывода (отображения).

Пример

long currentMoment = System.currentTimeMillis(); // текущая точка времени. 
// Сейчас 18 ноября 2018г.
Date currentDate = new Date(currentMoment); // текущая дата
Calendar calendar = Calendar.getInstance(); // получаем объект календаря
calendar.setTime(currentDate); // устанавливаем ему текущее время
int currentYear = calendar.get(Calendar.YEAR); // узнаём текущий год
calendar.set(Calendar.YEAR, currentYear - 30); // устанавливаем календарю
// значение по умолчанию
Date defaultDate = calendar.getTime(); // получаем значение календаря по умолчанию
// Пример форматирования 
// Класс SimpleDateFormat является подклассом класса DateFormat 
// и позволяет определять собственные шаблоны форматирования для отображения даты и времени.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd.MM.yyyy");
String result = simpleDateFormat.format(defaultDate);
System.out.println(result); // тестовый вывод -> System.out: 18.11.1988

Пример очень подробный и многословный (можно сократить), чтобы вы поняли, в какую сторону можно углубиться с изучением.

READ ALSO
Вывод Map&#39;ы на jsp

Вывод Map'ы на jsp

не могу вывести ключ и значение Map'ы как хочу ключ - значение из-за того что в мапе у меня два листа

155