Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package guardianOfTime;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.time.Duration;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.util.Calendar;
- import java.util.Scanner;
- public class GuardianOfTime {
- public static void main(String[] args) throws ParseException {
- Scanner scanner = new Scanner(System.in);
- String[] input = scanner.nextLine().split(";");
- String startHour = input[0].substring(11, 13);
- String startMinutes = input[0].substring(14, 16);
- String endHour = input[1].substring(11, 13);
- String endMinutes = input[1].substring(14, 16);
- int hourStart = Integer.parseInt(getnum(startHour));
- int minutesStart = Integer.parseInt(getnum(startMinutes));
- int hourEnd = Integer.parseInt(getnum(endHour));
- int minutesEnd = Integer.parseInt(getnum(endMinutes));
- int hour = 0;
- int momentMinutes = hourStart * 60 + minutesStart;
- String dataStart = input[0].substring(0, 10).substring(0, 10);
- String dataEnd = input[1].substring(0, 10).substring(0, 10);
- String dt = dataStart; // Start date
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Calendar c = Calendar.getInstance();
- c.setTime(sdf.parse(dt));
- long day = getDays(input[0], input[1]);
- for (int i = 0; i < day; i++) {
- if (i == 0) {
- hour += (1440 - momentMinutes);
- c.add(Calendar.DATE, 1); // number of days to add
- dt = sdf.format(c.getTime());
- System.out.print(input[0] + " - " + dt + " 00:00:00 ");
- System.out.println(hour);
- } else {
- hour += 1440;
- c.add(Calendar.DATE, i - 1); // number of days to add
- dt = sdf.format(c.getTime());
- System.out.print(dt + " 00:00:00 - ");
- c.add(Calendar.DATE, i); // number of days to add
- dt = sdf.format(c.getTime());
- System.out.print(dt + " 00:00:00 ");
- System.out.println(1440);
- }
- }
- int momentEndMinutes = hourEnd * 60 + minutesEnd;
- if (day == 0) {
- hour = momentEndMinutes - momentMinutes;
- System.out.print(input[0] + " - " + input[1] + " ");
- System.out.println(hour);
- } else {
- hour += momentEndMinutes;
- int beforeDay = (int) day - 2;
- c.add(Calendar.DATE, beforeDay); // number of days to add
- dt = sdf.format(c.getTime());
- System.out.print(dt + " 00:00:00 - " + input[1] + " ");
- momentMinutes = hourEnd * 60 + minutesStart;
- System.out.println(momentMinutes);
- }
- System.out.println(hour);
- }
- private static long getDays(String start, String end) {
- String dataStart = start.substring(0, 10);
- String dataEnd = end.substring(0, 10);
- LocalDate d1 = LocalDate.parse(dataStart, DateTimeFormatter.ISO_LOCAL_DATE);
- LocalDate d2 = LocalDate.parse(dataEnd, DateTimeFormatter.ISO_LOCAL_DATE);
- Duration diff = Duration.between(d1.atStartOfDay(), d2.atStartOfDay());
- long diffDays = diff.toDays();
- return diffDays;
- }
- private static String getnum(String data) {
- String num = data;
- if (data.startsWith("0")) {
- num = data.substring(1);
- }
- return num;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement