import java.text.*;
import java.util.*;
class Eveniment {
private Date dataInceput, dataSfarsit
; // Primeste 2 stringuri in format yyyy-MM-dd HH:mm:ss reprezentand data si ora
// de inceput si de final a evenimentului si inca un string care contine numele
// cu care apare evenimentul in calendar
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 dataEveniment
= getDataInceput
(); Date dataUrmEv
= format.
parse(dataInceput
);//2019-04-19 22:46:23 String dataString1
= format.
format(dataEveniment
); if (dataEveniment.before(dataUrmEv)) {//2019-04-19 22:46:00
while (dataEveniment.before(dataUrmEv)) {
calendar.setTime(dataEveniment);
calendar.
add(Calendar.
HOUR_OF_DAY, numarOre
); dataEveniment = calendar.getTime();
dataString1 = format.format(dataEveniment);
}
}
if (dataEveniment.after(dataUrmEv)) {
calendar.setTime(dataEveniment);
calendar.
add(Calendar.
HOUR_OF_DAY, numarOre
); dataEveniment = calendar.getTime();
dataString1 = format.format(dataEveniment);
return dataString1;
}
if (dataEveniment.compareTo(dataUrmEv) == 0) {
return dataInceput;
}
return "Data nu este in formatul cerut!";
}
return "0";
}
}
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", 24);
//System.out.println(er.urmatorulEveniment("2019-04-19 22:46:23"));
System.
out.
println(er.
urmatorulEveniment("2019-03-08 22:46:00"));//nok //System.out.println(er.urmatorulEveniment("2019-03-09 22:46:00"));
// 2019-04-20 22:46:00
}
}
aW1wb3J0IGphdmEudGV4dC4qOwppbXBvcnQgamF2YS51dGlsLio7CgpjbGFzcyBFdmVuaW1lbnQgewogICAgcHJpdmF0ZSBEYXRlIGRhdGFJbmNlcHV0LCBkYXRhU2ZhcnNpdDsKICAgIHByaXZhdGUgU3RyaW5nIG51bWU7CiAgICAvLyBQcmltZXN0ZSAyIHN0cmluZ3VyaSBpbiBmb3JtYXQgeXl5eS1NTS1kZCBISDptbTpzcyByZXByZXplbnRhbmQgZGF0YSBzaSBvcmEKICAgIC8vIGRlIGluY2VwdXQgc2kgZGUgZmluYWwgYSBldmVuaW1lbnR1bHVpIHNpIGluY2EgdW4gc3RyaW5nIGNhcmUgY29udGluZSBudW1lbGUKICAgIC8vIGN1IGNhcmUgYXBhcmUgZXZlbmltZW50dWwgaW4gY2FsZW5kYXIKICAgIHB1YmxpYyBFdmVuaW1lbnQoU3RyaW5nIGRhdGFJbmNlcHV0LCBTdHJpbmcgZGF0YVNmYXJzaXQsIFN0cmluZyBudW1lKSB7CiAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmb3JtYXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgieXl5eS1NTS1kZCBISDptbTpzcyIpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHRoaXMuZGF0YUluY2VwdXQgPSBmb3JtYXQucGFyc2UoZGF0YUluY2VwdXQpOwogICAgICAgICAgICB0aGlzLmRhdGFTZmFyc2l0ID0gZm9ybWF0LnBhcnNlKGRhdGFTZmFyc2l0KTsKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRhdGEgbnUgZXN0ZSBpbiBmb3JtYXR1bCBjZXJ1dCEiKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5udW1lID0gbnVtZTsKICAgIH0KCiAgICBwdWJsaWMgRGF0ZSBnZXREYXRhSW5jZXB1dCgpIHsKICAgICAgICByZXR1cm4gZGF0YUluY2VwdXQ7CiAgICB9CgogICAgcHVibGljIERhdGUgZ2V0RGF0YVNmYXJzaXQoKSB7CiAgICAgICAgcmV0dXJuIGRhdGFTZmFyc2l0OwogICAgfQoKICAgIHB1YmxpYyBTdHJpbmcgZ2V0TnVtZSgpIHsKICAgICAgICByZXR1cm4gbnVtZTsKICAgIH0KfQoKY2xhc3MgRXZlbmltZW50UmVjdXJlbnQgZXh0ZW5kcyBFdmVuaW1lbnQgewogICAgcHJpdmF0ZSBpbnQgbnVtYXJPcmU7CgogICAgRXZlbmltZW50UmVjdXJlbnQoU3RyaW5nIGRhdGFJbmNlcHV0LCBTdHJpbmcgZGF0YVNmYXJzaXQsIFN0cmluZyBudW1lLCBpbnQgbnVtYXJPcmUpIHsKICAgICAgICBzdXBlcihkYXRhSW5jZXB1dCwgZGF0YVNmYXJzaXQsIG51bWUpOwogICAgICAgIHRoaXMubnVtYXJPcmUgPSBudW1hck9yZTsKICAgIH0KCiAgICBwdWJsaWMgU3RyaW5nIHVybWF0b3J1bEV2ZW5pbWVudChTdHJpbmcgZGF0YUluY2VwdXQpIHsKICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGZvcm1hdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eXl5LU1NLWRkIEhIOm1tOnNzIik7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgRGF0ZSBkYXRhRXZlbmltZW50ID0gZ2V0RGF0YUluY2VwdXQoKTsKICAgICAgICAgICAgRGF0ZSBkYXRhVXJtRXYgPSBmb3JtYXQucGFyc2UoZGF0YUluY2VwdXQpOy8vMjAxOS0wNC0xOSAyMjo0NjoyMwogICAgICAgICAgICBTdHJpbmcgZGF0YVN0cmluZzEgPSBmb3JtYXQuZm9ybWF0KGRhdGFFdmVuaW1lbnQpOwogICAgICAgICAgICBpZiAoZGF0YUV2ZW5pbWVudC5iZWZvcmUoZGF0YVVybUV2KSkgey8vMjAxOS0wNC0xOSAyMjo0NjowMAogICAgICAgICAgICAgICAgd2hpbGUgKGRhdGFFdmVuaW1lbnQuYmVmb3JlKGRhdGFVcm1FdikpIHsKICAgICAgICAgICAgICAgICAgICBDYWxlbmRhciBjYWxlbmRhciA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CiAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuc2V0VGltZShkYXRhRXZlbmltZW50KTsKICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5hZGQoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIG51bWFyT3JlKTsKICAgICAgICAgICAgICAgICAgICBkYXRhRXZlbmltZW50ID0gY2FsZW5kYXIuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgIGRhdGFTdHJpbmcxID0gZm9ybWF0LmZvcm1hdChkYXRhRXZlbmltZW50KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZGF0YUV2ZW5pbWVudC5hZnRlcihkYXRhVXJtRXYpKSB7CiAgICAgICAgICAgICAgICBDYWxlbmRhciBjYWxlbmRhciA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CiAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXRUaW1lKGRhdGFFdmVuaW1lbnQpOwogICAgICAgICAgICAgICAgY2FsZW5kYXIuYWRkKENhbGVuZGFyLkhPVVJfT0ZfREFZLCBudW1hck9yZSk7CiAgICAgICAgICAgICAgICBkYXRhRXZlbmltZW50ID0gY2FsZW5kYXIuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgZGF0YVN0cmluZzEgPSBmb3JtYXQuZm9ybWF0KGRhdGFFdmVuaW1lbnQpOwogICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFTdHJpbmcxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkYXRhRXZlbmltZW50LmNvbXBhcmVUbyhkYXRhVXJtRXYpID09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBkYXRhSW5jZXB1dDsKICAgICAgICAgICAgfQoKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewogICAgICAgICAgICByZXR1cm4gIkRhdGEgbnUgZXN0ZSBpbiBmb3JtYXR1bCBjZXJ1dCEiOwogICAgICAgIH0KICAgICAgICByZXR1cm4gIjAiOwogICAgfQoKfQoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIEV2ZW5pbWVudFJlY3VyZW50IGVyID0gbmV3IEV2ZW5pbWVudFJlY3VyZW50KCIyMDE5LTAzLTA5IDIyOjQ2OjAwIiwKICAgICAgICAgICAgICAgICIyMDE5LTAzLTA5IDIzOjAwOjAwIiwgIlNjcmlzIHByb2JsZW1lIiwgMjQpOwogICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKGVyLnVybWF0b3J1bEV2ZW5pbWVudCgiMjAxOS0wNC0xOSAyMjo0NjoyMyIpKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZXIudXJtYXRvcnVsRXZlbmltZW50KCIyMDE5LTAzLTA4IDIyOjQ2OjAwIikpOy8vbm9rCiAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oZXIudXJtYXRvcnVsRXZlbmltZW50KCIyMDE5LTAzLTA5IDIyOjQ2OjAwIikpOwogICAgICAgIC8vIDIwMTktMDQtMjAgMjI6NDY6MDAKICAgIH0KfQ==