-4

I am getting incorrect results whatever I do. Could anyone give me some advise please :).

Here is the code of my program the is responsible for getting the time between two dates.

I am getting a result but the problem is that it is incorrect and I have having trouble finding the problem.

I have to Joda library in my project.

if (timerightnow.isSelected()) {
            DateFormat getdate = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
            Date getdate1 = new Date(); 

            String datenow = getdate1.toString();

            String monthnow = datenow.substring(4, 7);
            String daynow = datenow.substring(8,10);
            String hournow = datenow.substring(11,19);
            String yearnow = datenow.substring(25, 29);

            if (monthnow.equalsIgnoreCase("jan"))
                monthnow = "01";
            if (monthnow.equalsIgnoreCase("feb"))
                monthnow = "02";
            if (monthnow.equalsIgnoreCase("mar"))
                monthnow = "03";
            if (monthnow.equalsIgnoreCase("apr"))
                monthnow = "04";
            if (monthnow.equalsIgnoreCase("may"))
                monthnow = "05";
            if (monthnow.equalsIgnoreCase("jun"))
                monthnow = "06";
            if (monthnow.equalsIgnoreCase("jul"))
                monthnow = "07";
            if (monthnow.equalsIgnoreCase("agu"))
                monthnow = "08";
            if (monthnow.equalsIgnoreCase("sep"))
                monthnow = "09";
            if (monthnow.equalsIgnoreCase("oct"))
                monthnow = "10";
            if (monthnow.equalsIgnoreCase("nov"))
                monthnow = "11";
            if (monthnow.equalsIgnoreCase("dec"))
                monthnow = "12";

            String timenow = monthnow + "/" + daynow + "/" + yearnow + " " + hournow;
            String timetotext = timeto.getText();
            SimpleDateFormat date = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");


            Date datestart = null;
            Date dateend = null;



             try {

                 datestart = date.parse(timenow);
                 dateend = date.parse(timetotext);

                 DateTime datestartdaytime = new DateTime(datestart);
                 DateTime dateenddaytime = new DateTime(dateend);

                 JOptionPane.showMessageDialog(null, datestartdaytime + "\n" + dateenddaytime);

                int monthoutput = Months.monthsBetween(datestartdaytime, dateenddaytime).getMonths();
                int daysoutput = Days.daysBetween(datestartdaytime, datestartdaytime).getDays() % 30;
                int hoursoutput = Hours.hoursBetween(datestartdaytime, datestartdaytime).getHours() % 24;
                int minutsoutput = Minutes.minutesBetween(datestartdaytime, dateenddaytime).getMinutes() % 60;
                int secondsoutput = Seconds.secondsBetween(datestartdaytime, dateenddaytime).getSeconds() % 60;

                answer.setText(monthoutput + "Months" + daysoutput + "Days" + hoursoutput + "Hours" + minutsoutput + "Minutes" + secondsoutput + "Seconds");

Thanks a lot :)

Ole V.V.
  • 81,772
  • 15
  • 137
  • 161
AyhamSYR
  • 13
  • 4
  • 3
    If you will please specify the result you want precisely. With an example. And how the result you get differs. And what `timeto` is. Then I am sure someone can and will answer your question. Thank you. PS I’d immediately recommend [java.time, the modern Java date and time API](https://docs.oracle.com/javase/tutorial/datetime/) over Joda-Time. Joda-Time is in maintenance mode since a couple of years at least. – Ole V.V. Oct 17 '18 at 05:55
  • You are converting the time now from a `Date` to a `String` and then parsing it back into a `Date`. Is there any point in that? Even if you wanted to do that, it could be done in a much simpler way. Also, when you use Joda-Time, don’t mix the outdated classes `Date` and `SimpleDateFormat` in too, that’s just over-complicating things. Joda-Time can give you the functionality you want and more. – Ole V.V. Oct 17 '18 at 06:11
  • Also you have posted many lines of code. For your coming questions (both on Stack Overflow and elsewhere) you should learn [How to create a Minimal, Complete, and Verifiable example](https://stackoverflow.com/help/mcve). With that and a precise problem description I would have expected someone to find and point out your issue much sooner. You might even have discovered yourself before posting the question. Additionally learning to use a debugger may well be a good investment for you. – Ole V.V. Oct 17 '18 at 09:49

1 Answers1

0

Your bug is in these two lines:

            int daysoutput = Days.daysBetween(datestartdaytime, datestartdaytime).getDays() % 30;
            int hoursoutput = Hours.hoursBetween(datestartdaytime, datestartdaytime).getHours() % 24;

You intended to use dateenddaytime as the second argument:

            int daysoutput = Days.daysBetween(datestartdaytime, dateenddaytime).getDays() % 30;
            int hoursoutput = Hours.hoursBetween(datestartdaytime, dateenddaytime).getHours() % 24;
Ole V.V.
  • 81,772
  • 15
  • 137
  • 161