-2

How to convert 12 hours hh:mm a into HH:mm? When we converting this we are unable to get into 24 hours format. Here the time format pm to am is not converting when we assigned start time at 10pm and wake up time 7am. Here we are unable to get the total time. It's getting stopped at 12:00am and also we are getting the total time double from 10pm to 7am as 18 hours. when time is changing from 11:59pm to 00:00am "00:00am" is causing the problem here.

public class Wakeup extends Activity {
ImageButton home, back, up_arw2, up_arw1, up_arw3, down_arw4, down_arw5, down_arw6;
TextView hours, minutes, ampm;
Button save_btn;
SharedPreferences timepreference;
SharedPreferences.Editor edittime;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.wakeup_time);
    hours = (TextView) findViewById(R.id.hours);
    minutes = (TextView) findViewById(R.id.minutes);
    ampm = (TextView) findViewById(R.id.ampm);
    home = (ImageButton) findViewById(R.id.home);
    save_btn = (Button) findViewById(R.id.save_btn);
    timepreference = getSharedPreferences("CHILDTIME", MODE_PRIVATE);
    Calendar c = Calendar.getInstance();
    SimpleDateFormat df = new SimpleDateFormat("HH:mm a");
    String formattedTime = df.format(c.getTime());
edittime = timepreference.edit();
    home.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getApplicationContext(), Settings.class));
        }
    });

    back = (ImageButton) findViewById(R.id.back);
    back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getApplicationContext(), Settings.class));
        }
    });
    up_arw2 = (ImageButton) findViewById(R.id.up_arw2);
    up_arw2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int timenum = Integer.parseInt(hours.getText().toString());
            if (timenum == 11) {
                if (ampm.getText().toString().equals("AM")) {
                    ampm.setText("PM");
                    timenum++;
                    hours.setText(String.valueOf(timenum));
                } else {
                    ampm.setText("AM");
                    timenum++;
                    hours.setText(String.valueOf(timenum));
                }
            } else {
                timenum++;
                hours.setText(String.valueOf(timenum));
                down_arw4.setClickable(true);
            }
            if (timenum > 12) {
                hours.setText("1");
            }
        }
    });
    down_arw4 = (ImageButton) findViewById(R.id.down_arw4);
    down_arw4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int timenum = Integer.parseInt(hours.getText().toString());
            if (timenum == 1) {
                hours.setText("12");
            } else {
                timenum--;
                hours.setText(String.valueOf(timenum));
            }
        }
    });
    up_arw3 = (ImageButton) findViewById(R.id.up_arw3);
    up_arw3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int timenum = Integer.parseInt(minutes.getText().toString());
            if (timenum == 59) {
                minutes.setText("00");
            } else {
                timenum++;
                minutes.setText(roundedmin(String.valueOf(timenum)));
            }
        }
    });
    down_arw5 = (ImageButton) findViewById(R.id.down_arw5);
    down_arw5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int timenum = Integer.parseInt(minutes.getText().toString());
            if (timenum == 0) {
                minutes.setText("59");
            } else {
                timenum--;
                minutes.setText(roundedmin(String.valueOf(timenum)));
                up_arw3.setClickable(true);
            }
        }
    });
    down_arw6 = (ImageButton) findViewById(R.id.down_arw6);
    down_arw6.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ampm.setText("PM");
        }
    });
    up_arw1 = (ImageButton) findViewById(R.id.up_arw1);
    up_arw1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ampm.setText("AM");
        }
    });

    save_btn.setOnClickListener(new View.OnClickListener() {
        Date date;
        long gottimesss,millisecndslong;
        @Override
        public void onClick(View v) {
            SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm");
            SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a");
            try {
                date = parseFormat.parse(hours.getText().toString() + ":" + minutes.getText().toString() + " " + ampm.getText().toString());
                String gottime = displayFormat.format(date);
                String[] timedivided = gottime.split(":");
                String gothr = timedivided[0];
                long gotlong = TimeUnit.HOURS.toMinutes(Long.parseLong(gothr));
                String gotmin = timedivided[1];
                int gotintmin = Integer.parseInt(gotmin);
                gottimesss=gotlong+gotintmin;
                millisecndslong=TimeUnit.MINUTES.toMillis(gottimesss);
                convertSecToHoursMinute(millisecndslong);
                Log.d("GOtssss", String.valueOf(millisecndslong));
                Log.d("timing", "");
            } catch (ParseException e) {
                e.printStackTrace();
            }
 edittime.putLong("savedwakeuptime", millisecndslong);
edittime.commit();
startActivity(new Intent(getApplicationContext(), Home.class));
        }
    });
}
String convertSecToHoursMinute(long Sec) {
    long hours = Sec / 3600;
    long minutes = (Sec % 3600) / 60;
    long seconds = (Sec % 3600) % 60;

    String amPm = "am";
    if (minutes == 60) {
        minutes = 0;
        hours = hours + 1;
    }
    if (hours == 12) {
        amPm = "pm";
    }
    if (hours == 0) {
        hours = 12;
    }
    if (hours > 12) {
        hours = hours - 12;
        amPm = "pm";
    }
    Log.d("Timingdata",setZeroBeforeNine(hours) + ":" + setZeroBeforeNine(minutes) + " " + amPm);
    return setZeroBeforeNine(hours) + ":" + setZeroBeforeNine(minutes) + " " + amPm;
}

public static String setZeroBeforeNine(long digit) {
    try {
        if (digit <= 9) {
            return "0" + digit;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "" + digit;
}

public static String roundedmin(String min) {
    if (min.length() == 1) {
        min = "0" + min;
    }
    return min;
}
}
Android
  • 3
  • 1
  • 4
  • 5
    What have you tried? You'll have better luck getting assistance on stackoverflow if you show the code you wrote that didn't work. – DavidS Jun 02 '16 at 04:07
  • Please show your code. It will greatly clarify your question. – 4castle Jun 02 '16 at 04:07
  • 4
    Possible duplicate of [How to convert 24 hr format time in to 12 hr Format?](http://stackoverflow.com/questions/6907968/how-to-convert-24-hr-format-time-in-to-12-hr-format) – piyushj Jun 02 '16 at 04:08
  • it's the opposite, I guess :-) [and without the am/pm info, it's impossible to be done BTW] – Leo Jun 02 '16 at 04:10
  • We are passing am/pm in it. Here when we are putting time at 9pm for example, it is taking correct time from 9pm to 11:59pm and then it is taking 12:00 am as '0' value and from 12:00am to 7:00am it's not taking the time and giving negative value there. – Android Jun 02 '16 at 04:34

2 Answers2

0

Use these two method for convert second to 24hours format public static

String convertSecToHoursMinute(long Sec) {
        long hours = Sec / 3600;
        long minutes = (Sec % 3600) / 60;
        long seconds = (Sec % 3600) % 60;
        String amPm = "am";
        if (minutes == 60) {
            minutes = 0;
            hours = hours + 1;
        }


        if (hours == 12) {
            amPm = "pm";
        }
        if (hours == 0) {
            hours = 12;
        }
        if (hours > 12) {
            hours = hours - 12;
            amPm = "pm";
        }
        return setZeroBeforeNine(hours) + ":" + setZeroBeforeNine(minutes) + " " + amPm;
    }

    /**
     * To set Zero before digits if less than 9(for date and time)
     *
     * @param digit : Date and time before which 0 is placed if less than 9
     * @return :return Digit placing 0 as prefix if digit is less than 9
     */
    public static String setZeroBeforeNine(long digit) {
        try {
            if (digit <= 9) {
                return "0" + digit;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "" + digit;
    }
Nitesh Pareek
  • 362
  • 2
  • 10
-1

Try this code

import java.text.SimpleDateFormat;
import java.util.Date;

    public class Main {
       public static void main(String [] args) throws Exception {
           SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm");
           SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a");
           Date date = parseFormat.parse("10:30 PM");
           System.out.println(parseFormat.format(date) + " = " + displayFormat.format(date));
       }
}
Nitesh Pareek
  • 362
  • 2
  • 10
  • As we tried the above code we are getting problem here when the time comes up to 12:00am it is taking it as zero and the total value is becoming zero and also we are converting 24 hours to milliseconds too. – Android Jun 02 '16 at 04:26