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 {
public static final long HOUR_IN_MSEC = 3600000;
private int numarOre;
public EvenimentRecurent
(String dataInceput,
String dataSfarsit,
String nume,
int numarOre
) { super(dataInceput, dataSfarsit, nume);
this.numarOre = numarOre;
}
Date timpCurent
= getDataInceput
(); try {
Date timpSpecific
= formatRecurent.
parse(dataEveniment
); timpCurent.setTime(timpCurent.getTime() + (timpSpecific.getTime() - timpCurent.getTime()) / (numarOre * HOUR_IN_MSEC) * numarOre * HOUR_IN_MSEC);
if (timpCurent.before(timpSpecific)) {
timpCurent.setTime(timpCurent.getTime() + numarOre * HOUR_IN_MSEC);
}
System.
out.
println("Data nu este in formatul cerut!"); return null;
}
return formatRecurent.format(timpCurent).toString();
}
}
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")); // 2019-04-20 22:46:00
}
}
aW1wb3J0IGphdmEudGV4dC4qOwppbXBvcnQgamF2YS51dGlsLio7CiAKY2xhc3MgRXZlbmltZW50IHsKICAgIHByaXZhdGUgRGF0ZSBkYXRhSW5jZXB1dCwgZGF0YVNmYXJzaXQ7CiAgICBwcml2YXRlIFN0cmluZyBudW1lOwogICAgLy8gUHJpbWVzdGUgMiBzdHJpbmd1cmkgaW4gZm9ybWF0IHl5eXktTU0tZGQgSEg6bW06c3MgcmVwcmV6ZW50YW5kIGRhdGEgc2kgb3JhCiAgICAvLyBkZSBpbmNlcHV0IHNpIGRlIGZpbmFsIGEgZXZlbmltZW50dWx1aSBzaSBpbmNhIHVuIHN0cmluZyBjYXJlIGNvbnRpbmUgbnVtZWxlCiAgICAvLyBjdSBjYXJlIGFwYXJlIGV2ZW5pbWVudHVsIGluIGNhbGVuZGFyCiAgICBwdWJsaWMgRXZlbmltZW50KFN0cmluZyBkYXRhSW5jZXB1dCwgU3RyaW5nIGRhdGFTZmFyc2l0LCBTdHJpbmcgbnVtZSkgewogICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm9ybWF0ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXktTU0tZGQgSEg6bW06c3MiKTsKICAgICAgICB0cnkgewogICAgICAgICAgICB0aGlzLmRhdGFJbmNlcHV0ID0gZm9ybWF0LnBhcnNlKGRhdGFJbmNlcHV0KTsKICAgICAgICAgICAgdGhpcy5kYXRhU2ZhcnNpdCA9IGZvcm1hdC5wYXJzZShkYXRhU2ZhcnNpdCk7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEYXRhIG51IGVzdGUgaW4gZm9ybWF0dWwgY2VydXQhIik7CiAgICAgICAgfQogICAgICAgIHRoaXMubnVtZSA9IG51bWU7CiAgICB9CiAKICAgIHB1YmxpYyBEYXRlIGdldERhdGFJbmNlcHV0KCkgewogICAgICAgIHJldHVybiBkYXRhSW5jZXB1dDsKICAgIH0KIAogICAgcHVibGljIERhdGUgZ2V0RGF0YVNmYXJzaXQoKSB7CiAgICAgICAgcmV0dXJuIGRhdGFTZmFyc2l0OwogICAgfQogCiAgICBwdWJsaWMgU3RyaW5nIGdldE51bWUoKSB7CiAgICAgICAgcmV0dXJuIG51bWU7CiAgICB9Cn0KIApjbGFzcyBFdmVuaW1lbnRSZWN1cmVudCBleHRlbmRzIEV2ZW5pbWVudCB7CiAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGxvbmcgSE9VUl9JTl9NU0VDID0gMzYwMDAwMDsKICAgIHByaXZhdGUgaW50IG51bWFyT3JlOwogCiAgICBwdWJsaWMgRXZlbmltZW50UmVjdXJlbnQoU3RyaW5nIGRhdGFJbmNlcHV0LCBTdHJpbmcgZGF0YVNmYXJzaXQsIFN0cmluZyBudW1lLCBpbnQgbnVtYXJPcmUpIHsKICAgICAgICBzdXBlcihkYXRhSW5jZXB1dCwgZGF0YVNmYXJzaXQsIG51bWUpOwogICAgICAgIHRoaXMubnVtYXJPcmUgPSBudW1hck9yZTsKICAgIH0KIAogICAgcHVibGljIFN0cmluZyB1cm1hdG9ydWxFdmVuaW1lbnQoU3RyaW5nIGRhdGFFdmVuaW1lbnQpIHsKICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IGZvcm1hdFJlY3VyZW50ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXktTU0tZGQgSEg6bW06c3MiKTsKICAgICAgICBEYXRlIHRpbXBDdXJlbnQgPSBnZXREYXRhSW5jZXB1dCgpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIERhdGUgdGltcFNwZWNpZmljID0gZm9ybWF0UmVjdXJlbnQucGFyc2UoZGF0YUV2ZW5pbWVudCk7CiAgICAgICAgICAgIHRpbXBDdXJlbnQuc2V0VGltZSh0aW1wQ3VyZW50LmdldFRpbWUoKSArICh0aW1wU3BlY2lmaWMuZ2V0VGltZSgpIC0gdGltcEN1cmVudC5nZXRUaW1lKCkpIC8gKG51bWFyT3JlICogSE9VUl9JTl9NU0VDKSAqIG51bWFyT3JlICogSE9VUl9JTl9NU0VDKTsKICAgICAgICAgICAgaWYgKHRpbXBDdXJlbnQuYmVmb3JlKHRpbXBTcGVjaWZpYykpIHsKICAgICAgICAgICAgICAgIHRpbXBDdXJlbnQuc2V0VGltZSh0aW1wQ3VyZW50LmdldFRpbWUoKSArIG51bWFyT3JlICogSE9VUl9JTl9NU0VDKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRGF0YSBudSBlc3RlIGluIGZvcm1hdHVsIGNlcnV0ISIpOwogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZvcm1hdFJlY3VyZW50LmZvcm1hdCh0aW1wQ3VyZW50KS50b1N0cmluZygpOwogICAgfQp9CiAKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIEV2ZW5pbWVudFJlY3VyZW50IGVyID0gbmV3IEV2ZW5pbWVudFJlY3VyZW50KCIyMDE5LTAzLTA5IDIyOjQ2OjAwIiwKICAgICAgICAgICAgICAgICIyMDE5LTAzLTA5IDIzOjAwOjAwIiwgIlNjcmlzIHByb2JsZW1lIiwgMjQpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlci51cm1hdG9ydWxFdmVuaW1lbnQoIjIwMTktMDQtMTkgMjI6NDY6MjMiKSk7CiAgICAgICAgLy8gMjAxOS0wNC0yMCAyMjo0NjowMAogICAgfQp9