2016-06-01 4 views
1

Ich benutze einen Zeitzähler, um die Zeit zu wählen und es dann in einem Toast im 24-Stunden-Format anzuzeigen. Ich werde in Toast wie "2: 6" ausgegeben. Und ich möchte es im richtigen Zeitformat wie "02:06" bekommen. Wie kann ich das tun ....Wie man eine Extra Null rechtzeitig für das richtige Zeitformat hinzufügt

public void ShowTimePicker(View view) { 
    DialogFragment newFragment = new TimePickerFragment(); 
    newFragment.show(getSupportFragmentManager(), "timePicker"); 

} 


public static class TimePickerFragment extends DialogFragment 
     implements TimePickerDialog.OnTimeSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current time as the default values for the picker 
     final Calendar c = Calendar.getInstance(); 

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

     // Create a new instance of TimePickerDialog and return it 
     return new TimePickerDialog(getActivity(), this, hour, minute, 
       DateFormat.is24HourFormat(getActivity())); 
    } 

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 

     Toast myToast = Toast.makeText(getContext(), hourOfDay + ":" + minute, Toast.LENGTH_SHORT); 
     myToast.show(); 


    } 
}          
+1

Mögliche Duplikat von [So formatieren Sie Longs in Android, um immer zwei Ziffern anzuzeigen] (http://stackoverflow.com/questions/20293887/how-to-format-longs-in-android-to-always-display-two-digits) – NSimon

Antwort

1

Zuerst müssen eine Funktion erstellen, die Ihre Eingaben überprüfen und wandeln es in String als pro Zustand.

public String convertDate(int input) { 
    if (input >= 10) { 
    return String.valueOf(input); 
    } else { 
    return "0" + String.valueOf(input); 
    } 
} 

Dann können Sie wie nennen dieses

txtTime.setText(convertDate(hourOfDay) + ":" + convertDate(minute)); 

Und Ihre Toast wird wie sein diese

Toast myToast = Toast.makeText(getContext(), convertDate(hourOfDay) + ":" + convertDate(minute), Toast.LENGTH_SHORT); 
1

können Sie schreiben diesen

Toast myToast = Toast.makeText(getContext(), hourOfDay <10? "0"+hourOfDay :hourOfDay + ":" + minute<10:"0"+minute:minute, Toast.LENGTH_SHORT); 
1

Sie müssen nur die String.format wie folgt verwendet werden:

String format = "%1$02d"; // two digits 
Toast.makeText(getContext(), String.format(format, hourOfDay)+ ":" + String.format(format, minute, Toast.LENGTH_SHORT).show(); 
1

Versuchen Sie diese

private String fillText(int i){ 
    return i>9?i+"":"0"+i; 
} 

...

Toast myToast = Toast.makeText(getContext(), fillText(hourOfDay) + ":" + filllText(minute), Toast.LENGTH_SHORT); 
5

int ist nur eine ganze Zahl. Ganzzahlen haben keine führenden Nullen. Sie können nur mit führenden Nullen angezeigt werden, wenn Sie sie in String Objekte konvertieren. Eine Möglichkeit, das zu tun, ist wie folgt:

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

String curTime = String.format("%02d:%02d", hour, minute); 
1

Fügen Sie diese Zeichenfolge ressource in Ihrem strings.xml

<string name="time_remaining">%1$02d:%2$02d</string> 

In Ihrer Funktion onTimeSet Sie es wie folgt verwendet werden:

String time = getActivity().getResources().getString(R.string.time_remaining, hourOfDay, minute); 
Toast myToast = Toast.makeText(getContext(), time, Toast.LENGTH_SHORT); 
myToast.show(); 
Verwandte Themen