fork download
  1. import java.util.*;
  2. import java.text.*;
  3.  
  4. class Eveniment {
  5. private Date dataInceput, dataSfarsit;
  6. private String nume;
  7. public Eveniment(String dataInceput, String dataSfarsit, String nume) {
  8. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  9. try {
  10. this.dataInceput = format.parse(dataInceput);
  11. this.dataSfarsit = format.parse(dataSfarsit);
  12. } catch (Exception e) {
  13. System.out.println("Data nu este in formatul cerut!");
  14. }
  15. this.nume = nume;
  16. }
  17.  
  18. public Date getDataInceput() {
  19. return dataInceput;
  20. }
  21.  
  22. public Date getDataSfarsit() {
  23. return dataSfarsit;
  24. }
  25.  
  26. public String getNume() {
  27. return nume;
  28. }
  29. }
  30.  
  31. class EvenimentRecurent extends Eveniment{
  32. private Date data;
  33. private static int numarOre;
  34.  
  35. public 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 datadata){
  41. SimpleDateFormat form = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  42. try {
  43. data = form.parse(datadata);
  44. } catch (Exception e) {
  45. System.out.println("Data nu este in formatul cerut!");
  46. }
  47. Date aux = getDataInceput();
  48. /*DecimalFormat crunchifyFormatter = new DecimalFormat("###,###");
  49.   long diff = data.getTime() - aux.getTime();
  50.   int diffsec = (int) (diff / (1000));//diferenta in secunde dintre cele doua date
  51.   double hoursec = diffsec / 3600.0;//convertirea diferentei din secunde in ore
  52.   int diffhours = (int) (diff / (60 * 60 * 1000));//diferenta in ore dintre cele doua date
  53.   int ev = diffhours / this.numarOre;*/
  54. Calendar cal = Calendar.getInstance();
  55. cal.setTime(aux);//vriabila cal de tip Calendar preia valoarea datei de inceput
  56. //cal.add(Calendar.HOUR, (ev * this.numarOre));//am adaugat la data de inceput multimpul numarului de ore la care se repeta evenimentul
  57. Calendar c1 = Calendar.getInstance();
  58. c1.setTime(data);
  59. //if (hoursec > (ev * this.numarOre)){// in cazul in care numarul total de ore dintre data de inceput si data din urmatorulEveniment
  60. //e mai mare decat ec * this.numarOre mai adaug numarul de ore inca o data
  61. // cal.add(Calendar.HOUR, this.numarOre);
  62. //}*/
  63. long seconds = (c1.getTimeInMillis() - cal.getTimeInMillis()) / 1000;
  64. int hours = (int) (seconds / 3600);
  65. System.out.println(hours);
  66. //return form.format(cal.getTime());//am convertit data Calendar intr-un string
  67. return datadata;
  68. }
  69. }
  70.  
  71. class prog {
  72. public static void main(String[] args) {
  73. EvenimentRecurent er = new EvenimentRecurent("2019-03-08 22:46:00",
  74. "2019-03-09 23:00:00", "Scris probleme", 8);
  75. System.out.println(er.urmatorulEveniment("2019-03-10 14:46:02"));
  76. // 2019-04-20 22:46:00
  77. }
  78. }
Success #stdin #stdout 0.13s 36424KB
stdin
Standard input is empty
stdout
40
2019-03-10 14:46:02