5

i use this code to show current time in TimePicker, but i don't know really,why it doesn't show correctly!? for example now time (system time) is 2:56 PM, but it shows 2:56 AM!. how can i solve it? thanks.

 private long timer1 = 0; 
 ...

switch (view.getId()) {
        case R.id.add1: {
            if (timer1 == 0) {
                timer1 = getCurrentTime();
            }
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(timer1);

            TimePicker timePicker = (TimePicker) findViewById(R.id.tp_1);
            timePicker.setCurrentHour(calendar.get(Calendar.HOUR));
            timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));



            break;
         . ..              
        }

private long getCurrentTime() {
    Calendar calendar = GregorianCalendar.getInstance();
    return calendar.getTimeInMillis();
}

and also i have the same problem when i want to convert this time into String form with this method below:

private String convertTimeToString(long time) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(time);

    int hour = calendar.get(Calendar.HOUR_OF_DAY);
    //int hour = get;
    int minute = calendar.get(Calendar.MINUTE);

    String timeSet;
    if (hour > 12) {
        hour -= 12;
        timeSet = "PM";
    } else if (hour == 0) {
        hour += 12;
        timeSet = "AM";
    } else if (hour == 12) {
        timeSet = "PM";
    } else {
        timeSet = "AM";
    }

    String minutes;
    if (minute < 10) {
        minutes = "0" + minute;
    } else {
        minutes = String.valueOf(minute);
    }
    // Append in a StringBuilder
    return String.format("%s:%s %s", hour, minutes, timeSet);

}

please help me!

Mina Dahesh
  • 332
  • 8
  • 21

3 Answers3

4

Updated
1) wrong hour problem: Try to edit code like this:

...
timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
...

2) string representation problem: general approach to convert date/time to string is following:

String format = "hh:mm"; // or any other format - see note below
SimpleDateFormat formatter = new SimpleDateFormat(format);
formatter.format(yourDate);

or when you use long timestamp last line will be:

formatter.format(new Date(yourLongTimestamp));

Useful links:
Different date/time format symbols you may look here.
Test different format patterns you may here.

sberezin
  • 3,266
  • 23
  • 28
2
// display current time
    public void setCurrentTimeOnView() {

        tvDisplayTime = (TextView) findViewById(R.id.tvTime);
        timePicker1 = (TimePicker) findViewById(R.id.timePicker1);

        final Calendar c = Calendar.getInstance();
        hour = c.get(Calendar.HOUR_OF_DAY);
        minute = c.get(Calendar.MINUTE);

        // set current time into textview
        tvDisplayTime.setText(
                    new StringBuilder().append(pad(hour))
                                       .append(":").append(pad(minute)));

        // set current time into timepicker
        timePicker1.setCurrentHour(hour);
        timePicker1.setCurrentMinute(minute);

    }
DevOps85
  • 6,473
  • 6
  • 23
  • 42
  • thanks, but the output of this method must be String, because i need it in other parts of this proje. please help me how can i do it now? – Mina Dahesh Nov 11 '14 at 14:07
  • try to see last answer in this post: http://stackoverflow.com/questions/3992820/android-how-to-get-the-time-from-a-timepicker-when-it-is-typed-in – DevOps85 Nov 11 '14 at 19:42
  • with this: return String.format("%s:%s %s", Integer.toString(hour), minutes, timeSet); – DevOps85 Nov 11 '14 at 19:48
2

Replace this line:

timePicker.setCurrentHour(calendar.get(Calendar.HOUR));

To:

hourStart = c.get(Calendar.HOUR_OF_DAY);
Pratik Dasa
  • 7,439
  • 4
  • 30
  • 44