0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 9
1

Григорианский календарь,работа с датой

13.05.2016, 07:46. Показов 2557. Ответов 15
Метки нет (Все метки)

Нужно определить возраст работника.День, месяц и год рождения работника вводятся с клавиатуры.Как это реализовать?Тупо делать разницу между текущим годом и годом рождения работника не рационально,т.к его день рождения может еще не наступить.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2016, 07:46
Ответы с готовыми решениями:

Работа с датой
Всем привет... Возник следущий вопрос. Есть текущая дата 12.07.2013 И есть дата окончания...

Работа с датой
день добрый. подскажите, как лучше организовать сравнение и вычитание. есть две переменные типа...

Работа с датой
Условие: Создать класс Date для работы с датой в формате «год. месяц. день », содержащий три...

Работа с датой и временем
Написать программу,в которой по известной текущей дате получить кол-во дней, часов, минут и секунд,...

15
154 / 153 / 53
Регистрация: 30.04.2016
Сообщений: 321
13.05.2016, 20:42 2
Переводите в миллисекунды Date.getTime() вычитаете из одного другой, и разницу переводите в Date.
0
0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 9
14.05.2016, 18:02  [ТС] 3
public Class1{
int age;
Date d1 = new Date();
Date d2 = new Date(birthday,Month,Day);//2-ая дата принимает значение этих параметров,в данном случае дата рождения
void Age(){ //метод определяющий возраст работника
long dTime= d1.getTime() - d2.getTime();//Получил разницу в миллисекундах
}
}
Как теперь получить возраст???Не могу понять при помощи какого метода реализовать миллисекунды в дату
0
154 / 153 / 53
Регистрация: 30.04.2016
Сообщений: 321
14.05.2016, 18:20 4
У Date есть конструктор который принимает миллисекунды.
Java
1
new Date(dTime);
1
0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 9
14.05.2016, 18:35  [ТС] 5
Спасибо,но не понятно как получить возраст.Я получу разницу в миллисекундах между этими промежутками времени.Date примет эти миллисекунды и выведет дату,а как получить сколько лет прошло,т.е ГОДА.Ведь мне нужно узнать ВОЗРАСТ.Я понимаю,что не совсем понимаю в Java,но надеюсь на вашу помощь.
0
154 / 153 / 53
Регистрация: 30.04.2016
Сообщений: 321
14.05.2016, 18:53 6
Вот так например вывести
Java
1
2
SimpleDateFormat dateFormat = new SimpleDateFormat("y");
System.out.println(dateFormat.format(dateFormat.parse(dTime)) + " years");
Можете и вручную в принципе миллисекунды поделить и перевести в года, если вам не нужна точная дата, а только количество лет.
1
0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 9
14.05.2016, 19:20  [ТС] 7
Дело в том, что мне нужно полученный год присвоить переменной.Выдает ошибку
long dTime= d1.getTime() - d2.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("y");
int age = dateFormat.format(dateFormat.parse(dTime));
В чем проблема?
0
154 / 153 / 53
Регистрация: 30.04.2016
Сообщений: 321
14.05.2016, 20:28 8
Проблема в том, возвращается String. Чтобы перевести из String в int используйте Integer.parseInt(String).
1
0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 9
14.05.2016, 20:57  [ТС] 9
Ругается на dTime!!!!
String u = dateFormat.format(dateFormat.parse(dTime));
0
154 / 153 / 53
Регистрация: 30.04.2016
Сообщений: 321
14.05.2016, 21:13 10
Лучший ответ Сообщение было отмечено vladislav_j как решение

Решение

Я что-то опечатался, просто dateFormat.format(dTime); - то есть без parse.
И еще надо будет вычесть 1970 из результата, потому что так работает конструктор Date
Java
1
2
3
        Date dTime = new Date(d1.getTime() - d2.getTime());
        SimpleDateFormat dateFormat = new SimpleDateFormat("y");
        int age = Integer.parseInt(dateFormat.format(dTime)) - 1970;
1
0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 9
14.05.2016, 21:36  [ТС] 11
Работает,но опять проблема.Какую бы я дату рождения не вставлял,при нажатии кнопки ВЫЧИСЛИТЬ ВОЗРАСТ выдает одно и тоже число, в данном случае число 116.Что не так?
i
Java
1
2
3
4
5
6
7
8
9
10
11
12
mport java.util.Calendar;
import java.text.SimpleDateFormat;
public Class2{
int age,birthday,Month,Day;
 Date d1 = new Date();
Date d2 = new Date( birthday,Month,Day);//Здесь он мне почему то зачеркнул Дату))),но ошибку не выдал.
SimpleDateFormat dateFormat = new SimpleDateFormat("y");
void Age(){
Date dTime = new Date( d1.getTime() - d2.getTime());
  age = Integer.parseInt(dateFormat.format(dTime))- 1970;
 }
}
Спасибо вам за все,все хорошо объясняете,другой забил бы уже.Надеюсь поможете справится мне с этим вопросом)

 Комментарий модератора 
Используйте теги форматирования кода
0
154 / 153 / 53
Регистрация: 30.04.2016
Сообщений: 321
14.05.2016, 21:56 12
Этот конструктор устарел, и не поддерживается, вероятно поэтому и выдает не те результаты.
Документация говорит использовать Календарь
Java
1
2
3
        Calendar calendar = Calendar.getInstance();
        calendar.set(1988, Calendar.MARCH, 13);
        Date d2 = calendar.getTime();
1
0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 9
14.05.2016, 22:15  [ТС] 13
Я ВАМ ОЧЕНЬ БЛАГОДАРЕН ВСЕ РАБОТАЕТ!!!!Один вопрос зачем вычитать 1970?
Вот ради интереса фото программы
Миниатюры
Григорианский календарь,работа с датой  
0
154 / 153 / 53
Регистрация: 30.04.2016
Сообщений: 321
14.05.2016, 22:31 14
Лучший ответ Сообщение было отмечено vladislav_j как решение

Решение

Конструктор Date(long) создает дату, а параметр представляет собой сколько миллисекунд прошло с 1 января 1970 года.
Также в JAVA принято названия методов начинать с маленькой буквы, а не с заглавной; с заглавной только конструкторы, классы, интерфейсы.. В глаза просто бросается когда уже привыкаешь
1
0 / 0 / 0
Регистрация: 26.04.2016
Сообщений: 9
17.05.2016, 19:38  [ТС] 15
Я столкнулся с одной проблемой.Дело в том,что когда я ввожу месяц,в данном случае Май.Май 5 месяц по счету,но компилятор считает его за Июнь,т.к я понял,что месяцы нумеруются с 0.Как сделать так, чтобы когда мы вводили 5 месяц,то компилятор считал его за май а не июнь!
Миниатюры
Григорианский календарь,работа с датой  
0
Эксперт Java
4085 / 3819 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
18.05.2016, 10:51 16
Цитата Сообщение от vladislav_j Посмотреть сообщение
Как сделать так, чтобы когда мы вводили 5 месяц,то компилятор считал его за май а не июнь!
Вы неверное удивитесь - нужно вычесть единицу!

PS. Один вопрос - одна тема
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2016, 10:51
Помогаю со студенческими работами здесь

Перевод из Юлианского в Григорианский календарь
Даны натуральные числа a, b, c, обозначающие дату (число, месяц, год) по юлианскому календарю....

Календарь с датой отправления и прибытия
Помогите пожалуйста решить проблемку. Есть каледрадь, для ввода даты отправления и возврата. При...

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

Работа с датой
В таблице есть поле типа Date или DateTime. Может кто подскажет как 1. выбрать записи у которых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru