Convert 12 hours to 24 hours [closed]

断了今生、忘了曾经 提交于 2019-12-26 09:18:30

问题


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;
}
}

回答1:


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;
    }



回答2:


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));
       }
}


来源:https://stackoverflow.com/questions/37582474/convert-12-hours-to-24-hours

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!