Нужно создать класс "Human" с полями "Пол", "Дата рождения", "Фамилия", "Имя", "Отчество". Значение по умолчанию для поля "Дата рождения" должно быть = "Текущая дата - 30 лет". Например, сегодня 18.11.2018. По умолчанию дата должна быть 18.11.1988. А при запуске приложения завтра — 19.11.1988 и т.д. Как получить эту дату на языках С++ и Java? Спасибо за помощь.
Как я понимаю, вопрос в том, как получить текущую дату?
Например, так (для 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();
}
Используем 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
}
Представлением даты в 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
Пример очень подробный и многословный (можно сократить), чтобы вы поняли, в какую сторону можно углубиться с изучением.
Виртуальный выделенный сервер (VDS) становится отличным выбором
не могу вывести ключ и значение Map'ы как хочу ключ - значение из-за того что в мапе у меня два листа