Advertisement
nikeza

Guardian of Time

Jan 18th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.55 KB | None | 0 0
  1. package guardianOfTime;
  2.  
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;
  5. import java.time.Duration;
  6. import java.time.LocalDate;
  7. import java.time.format.DateTimeFormatter;
  8. import java.util.Calendar;
  9. import java.util.Scanner;
  10.  
  11. public class GuardianOfTime {
  12.     public static void main(String[] args) throws ParseException {
  13.         Scanner scanner = new Scanner(System.in);
  14.  
  15.         String[] input = scanner.nextLine().split(";");
  16.  
  17.  
  18.         String startHour = input[0].substring(11, 13);
  19.         String startMinutes = input[0].substring(14, 16);
  20.  
  21.         String endHour = input[1].substring(11, 13);
  22.         String endMinutes = input[1].substring(14, 16);
  23.  
  24.         int hourStart = Integer.parseInt(getnum(startHour));
  25.         int minutesStart = Integer.parseInt(getnum(startMinutes));
  26.  
  27.         int hourEnd = Integer.parseInt(getnum(endHour));
  28.         int minutesEnd = Integer.parseInt(getnum(endMinutes));
  29.  
  30.  
  31.         int hour = 0;
  32.  
  33.         int momentMinutes = hourStart * 60 + minutesStart;
  34.  
  35.         String dataStart = input[0].substring(0, 10).substring(0, 10);
  36.         String dataEnd = input[1].substring(0, 10).substring(0, 10);
  37.  
  38.         String dt = dataStart;  // Start date
  39.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  40.         Calendar c = Calendar.getInstance();
  41.         c.setTime(sdf.parse(dt));
  42.  
  43.  
  44.         long day = getDays(input[0], input[1]);
  45.  
  46.         for (int i = 0; i < day; i++) {
  47.             if (i == 0) {
  48.                 hour += (1440 - momentMinutes);
  49.                 c.add(Calendar.DATE, 1);  // number of days to add
  50.                 dt = sdf.format(c.getTime());
  51.                 System.out.print(input[0] + " - " + dt + " 00:00:00 ");
  52.                 System.out.println(hour);
  53.             } else {
  54.                 hour += 1440;
  55.                 c.add(Calendar.DATE, i - 1);  // number of days to add
  56.                 dt = sdf.format(c.getTime());
  57.                 System.out.print(dt + " 00:00:00 - ");
  58.                 c.add(Calendar.DATE, i);  // number of days to add
  59.                 dt = sdf.format(c.getTime());
  60.                 System.out.print(dt + " 00:00:00 ");
  61.                 System.out.println(1440);
  62.             }
  63.         }
  64.         int momentEndMinutes = hourEnd * 60 + minutesEnd;
  65.  
  66.         if (day == 0) {
  67.             hour = momentEndMinutes - momentMinutes;
  68.             System.out.print(input[0] + " - " + input[1] + " ");
  69.             System.out.println(hour);
  70.  
  71.         } else {
  72.             hour += momentEndMinutes;
  73.             int beforeDay = (int) day - 2;
  74.             c.add(Calendar.DATE, beforeDay);  // number of days to add
  75.             dt = sdf.format(c.getTime());
  76.             System.out.print(dt + " 00:00:00 - " + input[1] + " ");
  77.             momentMinutes = hourEnd * 60 + minutesStart;
  78.             System.out.println(momentMinutes);
  79.  
  80.  
  81.         }
  82.  
  83.  
  84.         System.out.println(hour);
  85.     }
  86.  
  87.     private static long getDays(String start, String end) {
  88.         String dataStart = start.substring(0, 10);
  89.         String dataEnd = end.substring(0, 10);
  90.         LocalDate d1 = LocalDate.parse(dataStart, DateTimeFormatter.ISO_LOCAL_DATE);
  91.         LocalDate d2 = LocalDate.parse(dataEnd, DateTimeFormatter.ISO_LOCAL_DATE);
  92.         Duration diff = Duration.between(d1.atStartOfDay(), d2.atStartOfDay());
  93.         long diffDays = diff.toDays();
  94.  
  95.         return diffDays;
  96.     }
  97.  
  98.  
  99.     private static String getnum(String data) {
  100.         String num = data;
  101.         if (data.startsWith("0")) {
  102.             num = data.substring(1);
  103.         }
  104.         return num;
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement