import java.text.*;
import java.util.*;
class Eveniment {
private Date dataInceput, dataSfarsit
;
try {
this.dataInceput = format.parse(dataInceput);
this.dataSfarsit = format.parse(dataSfarsit);
System.
out.
println("Data nu este in formatul cerut!"); }
this.nume = nume;
}
public Date getDataInceput
() { return dataInceput;
}
public Date getDataSfarsit
() { return dataSfarsit;
}
return nume;
}
}
class EvenimentRecurent extends Eveniment{
private int numarOre;
super (dataInceput, dataSfarsit, nume);
this.numarOre = numarOre;
}
try {
Date initialDate
= formatter.
parse(nextEvent
); Date startDate
= getDataInceput
();
long startingTime = startDate.getTime();
long nextEventTime = initialDate.getTime();
long interval = numarOre * 60L * 60L * 1000L;
if(nextEventTime <= startingTime){
return formatter.format(startingTime);
}
long dif = nextEventTime - startingTime;
long nrLoops = (dif + interval - 1) / interval;
long newEventTime = startingTime + nrLoops * interval;
return formatter.
format(new Date(newEventTime
)); return "Data nu este in formatul cerut!";
}
}
}
public class Main {
public static void main
(String[] args
) { EvenimentRecurent er = new EvenimentRecurent("2019-03-09 22:46:00",
"2019-03-09 23:00:00", "Scris probleme", 25);
System.
out.
println(er.
urmatorulEveniment("2019-04-19 22:46:23")); System.
out.
println(er.
urmatorulEveniment("2019-04-25 22:46:23")); }
}
aW1wb3J0IGphdmEudGV4dC4qOwppbXBvcnQgamF2YS51dGlsLio7CgpjbGFzcyBFdmVuaW1lbnQgewogIHByaXZhdGUgRGF0ZSBkYXRhSW5jZXB1dCwgZGF0YVNmYXJzaXQ7CiAgcHJpdmF0ZSBTdHJpbmcgbnVtZTsKICAKICBwdWJsaWMgRXZlbmltZW50KFN0cmluZyBkYXRhSW5jZXB1dCwgU3RyaW5nIGRhdGFTZmFyc2l0LCBTdHJpbmcgbnVtZSkgewogICAgU2ltcGxlRGF0ZUZvcm1hdCBmb3JtYXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgieXl5eS1NTS1kZCBISDptbTpzcyIpOwogICAgdHJ5IHsKICAgICAgdGhpcy5kYXRhSW5jZXB1dCA9IGZvcm1hdC5wYXJzZShkYXRhSW5jZXB1dCk7CiAgICAgIHRoaXMuZGF0YVNmYXJzaXQgPSBmb3JtYXQucGFyc2UoZGF0YVNmYXJzaXQpOwogICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEYXRhIG51IGVzdGUgaW4gZm9ybWF0dWwgY2VydXQhIik7CiAgICB9CiAgICB0aGlzLm51bWUgPSBudW1lOwogIH0KCiAgcHVibGljIERhdGUgZ2V0RGF0YUluY2VwdXQoKSB7CiAgICByZXR1cm4gZGF0YUluY2VwdXQ7CiAgfQoKICBwdWJsaWMgRGF0ZSBnZXREYXRhU2ZhcnNpdCgpIHsKICAgIHJldHVybiBkYXRhU2ZhcnNpdDsKICB9CgogIHB1YmxpYyBTdHJpbmcgZ2V0TnVtZSgpIHsKICAgIHJldHVybiBudW1lOwogIH0KfQoKY2xhc3MgRXZlbmltZW50UmVjdXJlbnQgZXh0ZW5kcyBFdmVuaW1lbnR7Cglwcml2YXRlIGludCBudW1hck9yZTsKCQoJRXZlbmltZW50UmVjdXJlbnQoU3RyaW5nIGRhdGFJbmNlcHV0LCBTdHJpbmcgZGF0YVNmYXJzaXQsIFN0cmluZyBudW1lLCBpbnQgbnVtYXJPcmUpewoJCXN1cGVyIChkYXRhSW5jZXB1dCwgZGF0YVNmYXJzaXQsIG51bWUpOwoJCXRoaXMubnVtYXJPcmUgPSBudW1hck9yZTsKCX0KCQoJcHVibGljIFN0cmluZyB1cm1hdG9ydWxFdmVuaW1lbnQoU3RyaW5nIG5leHRFdmVudCl7CgkJU2ltcGxlRGF0ZUZvcm1hdCBmb3JtYXR0ZXIgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgieXl5eS1NTS1kZCBISDptbTpzcyIpOwogICAgICAgIHRyeSB7CiAgICAgICAgCURhdGUgaW5pdGlhbERhdGUgPSBmb3JtYXR0ZXIucGFyc2UobmV4dEV2ZW50KTsKICAgICAgICAJRGF0ZSBzdGFydERhdGUgPSBnZXREYXRhSW5jZXB1dCgpOwogICAgICAgIAkKICAgICAgICAJbG9uZyBzdGFydGluZ1RpbWUgPSBzdGFydERhdGUuZ2V0VGltZSgpOwogICAgICAgIAlsb25nIG5leHRFdmVudFRpbWUgPSBpbml0aWFsRGF0ZS5nZXRUaW1lKCk7CiAgICAgICAgICAgIGxvbmcgaW50ZXJ2YWwgPSBudW1hck9yZSAqIDYwTCAqIDYwTCAqIDEwMDBMOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYobmV4dEV2ZW50VGltZSA8PSBzdGFydGluZ1RpbWUpewogICAgICAgICAgICAJcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQoc3RhcnRpbmdUaW1lKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgbG9uZyBkaWYgPSBuZXh0RXZlbnRUaW1lIC0gc3RhcnRpbmdUaW1lOwogICAgICAgICAgICBsb25nIG5yTG9vcHMgPSAoZGlmICsgaW50ZXJ2YWwgLSAxKSAvIGludGVydmFsOwogICAgICAgICAgICBsb25nIG5ld0V2ZW50VGltZSA9IHN0YXJ0aW5nVGltZSArIG5yTG9vcHMgKiBpbnRlcnZhbDsKCQkKCQkgICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQobmV3IERhdGUobmV3RXZlbnRUaW1lKSk7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgICByZXR1cm4gIkRhdGEgbnUgZXN0ZSBpbiBmb3JtYXR1bCBjZXJ1dCEiOwogICAgICAgIH0KCX0KfQoKcHVibGljIGNsYXNzIE1haW4gewogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgIEV2ZW5pbWVudFJlY3VyZW50IGVyID0gbmV3IEV2ZW5pbWVudFJlY3VyZW50KCIyMDE5LTAzLTA5IDIyOjQ2OjAwIiwKICAgICAgIjIwMTktMDMtMDkgMjM6MDA6MDAiLCAiU2NyaXMgcHJvYmxlbWUiLCAyNSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oZXIudXJtYXRvcnVsRXZlbmltZW50KCIyMDE5LTA0LTE5IDIyOjQ2OjIzIikpOwogICAgU3lzdGVtLm91dC5wcmludGxuKGVyLnVybWF0b3J1bEV2ZW5pbWVudCgiMjAxOS0wNC0yNSAyMjo0NjoyMyIpKTsKICB9Cn0=