fork download
  1. import java.text.*;
  2. import java.util.*;
  3.  
  4. class Eveniment {
  5. private Date dataInceput, dataSfarsit;
  6. private String nume;
  7.  
  8. public Eveniment(String dataInceput, String dataSfarsit, String nume) {
  9. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  10. try {
  11. this.dataInceput = format.parse(dataInceput);
  12. this.dataSfarsit = format.parse(dataSfarsit);
  13. } catch (Exception e) {
  14. System.out.println("Data nu este in formatul cerut!");
  15. }
  16. this.nume = nume;
  17. }
  18.  
  19. public Date getDataInceput() {
  20. return dataInceput;
  21. }
  22.  
  23. public Date getDataSfarsit() {
  24. return dataSfarsit;
  25. }
  26.  
  27. public String getNume() {
  28. return nume;
  29. }
  30. }
  31.  
  32. class EvenimentRecurent extends Eveniment{
  33. private int numarOre;
  34.  
  35. EvenimentRecurent(String dataInceput, String dataSfarsit, String nume, int numarOre){
  36. super (dataInceput, dataSfarsit, nume);
  37. this.numarOre = numarOre;
  38. }
  39.  
  40. public String urmatorulEveniment(String nextEvent){
  41. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  42. try {
  43. Date initialDate = formatter.parse(nextEvent);
  44. Date startDate = getDataInceput();
  45.  
  46. long startingTime = startDate.getTime();
  47. long nextEventTime = initialDate.getTime();
  48. long interval = numarOre * 60L * 60L * 1000L;
  49.  
  50. if(nextEventTime <= startingTime){
  51. return formatter.format(startingTime);
  52. }
  53.  
  54. long dif = nextEventTime - startingTime;
  55. long nrLoops = (dif + interval - 1) / interval;
  56. long newEventTime = startingTime + nrLoops * interval;
  57.  
  58. return formatter.format(new Date(newEventTime));
  59. } catch (Exception e) {
  60. return "Data nu este in formatul cerut!";
  61. }
  62. }
  63. }
  64.  
  65. public class Main {
  66. public static void main(String[] args) {
  67. EvenimentRecurent er = new EvenimentRecurent("2019-03-09 22:46:00",
  68. "2019-03-09 23:00:00", "Scris probleme", 25);
  69. System.out.println(er.urmatorulEveniment("2019-04-19 22:46:23"));
  70. System.out.println(er.urmatorulEveniment("2019-04-25 22:46:23"));
  71. }
  72. }
Success #stdin #stdout 0.19s 59164KB
stdin
Standard input is empty
stdout
2019-04-20 14:46:00
2019-04-26 20:46:00