-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path24-Time_ver1
More file actions
113 lines (90 loc) · 3.99 KB
/
Copy path24-Time_ver1
File metadata and controls
113 lines (90 loc) · 3.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package lesson24;
import java.util.Calendar;
import java.util.Date;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
/* Создайте класс Время, в котором реализованы операции
* + сложения,
* + вычитания,
* - сравнения,
* - ввода и
* + вывод на экран.
* Возможность конвертации времени из американского
* формата am (pm): 10:00 pm = 22:00, 12:00 pm =00:00
*
*/
// ДОРАБОТАТЬ:
// ДОБАВИТЬ В МЕТОД ADD ПРОВЕРКУ ПЕРЕХОДА МИНУТ ЧЕРЕЗ 60
// В МЕТОДЕ ADD ИЗМЕНИТЬ ФОРМАТ ВРЕМЕНИ НА 24-ЧАСОВОЙ
public class Time {
// SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
Calendar calendar = Calendar.getInstance();
private int hours, min;
// конструктор создаёт текущее время
public Time() {
this.hours = calendar.getTime().getHours();
this.min = calendar.getTime().getMinutes();
}
// конструктор получает на вход часы и минуты
public Time(int hours, int min) {
this.hours = hours;
this.min = min;
}
// метод выводит время
public Time getTime() {
return this;
}
// метод сложения времени
public String add(Time time) {
int firstHours = this.hours; // изначальные часы
int lastHours = time.hours; // добавляемые часы
int firstMinutes = this.min; // изначальные минуты
int lastMinutes = time.min; // добавляемые минуты
this.calendar.add(Calendar.HOUR, lastHours); // add hours
int resultHours = this.calendar.get(Calendar.HOUR);
this.calendar.add(Calendar.MINUTE, lastMinutes); // add minutes
int resultMinutes = this.calendar.get(Calendar.MINUTE);
return "сумма: " + resultHours + ":" + resultMinutes;
}
// метод вычитания времени (тот же метод add с отрицательными значениями доабавляемых полей)
public String substract(Time time) {
int firstHours = this.hours; // изначальные часы
int lastHours = time.hours; // добавляемые часы
int firstMinutes = this.min; // изначальные минуты
int lastMinutes = time.min; // добавляемые минуты
this.calendar.add(Calendar.HOUR, -lastHours); // substract hours
int resultHours = this.calendar.get(Calendar.HOUR);
this.calendar.add(Calendar.MINUTE, -lastMinutes); // substract minutes
int resultMinutes = this.calendar.get(Calendar.MINUTE);
return "разница: " + resultHours + ":" + resultMinutes;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "время: " + this.hours + ":" + this.min;
}
public static void main(String[] args) throws Exception {
// текущее время
Time currentTime = new Time();
System.out.println(currentTime.getTime());
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
// ввод времени с консоли
System.out.println("Введите время: \nчасы:");
String strHours = reader.readLine();
System.out.println("минуты:");
String strMinutes = reader.readLine();
int hours = Integer.parseInt(strHours);
int minutes = Integer.parseInt(strMinutes);
// время взятое из консоли
Time inputTime = new Time(hours, minutes);
System.out.println(inputTime.getTime());
// new Time() вместо currentTime, чтобы метод add не изменил объект currentTime
System.out.println(new Time().add(inputTime));
System.out.println(new Time().substract(inputTime));
} catch (Exception e) {
System.out.println("Неверный формат времени!");
}
}
}