TimePicker to setText,简单的bug

时间:2015-05-28 11:45:39

标签: android

TimePicker中选择一个时间后,我使用setText()显示该内容,但到目前为止一切正常,但问题是,如果我选择05:09,我只会得到在5:9 PM中显示TextView。我想念前面的零。但我要求

以下是我使用的代码:

public void onTimeSet(TimePicker timePicker,int selectedHour, int selectedMinute) 
{
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, selectedHour);
    calendar.set(Calendar.MINUTE, selectedMinute);

    int c_hour,c_min;
    String format;
    c_hour=selectedHour;
    c_min=selectedMinute;

    if (c_hour == 0) {
          c_hour += 12;
          format = "AM";
    } 
    else if (c_hour == 12) {
          format = "PM";
    } 
    else if (c_hour > 12) {
          c_hour -= 12;
          format = "PM";
    } 
    else {
         format = "AM";
    }

TextView dimple = (TextView)findViewById(R.id.timeText);
dimple.setText(new StringBuilder().
            append(c_hour).append(" : ").append(c_min).append(" ").append(format));

解决这个问题的快捷方法是什么?

3 个答案:

答案 0 :(得分:5)

你可以通过加前缀零来获得时间。

  

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

Calendar cal = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, hour);
        cal.set(Calendar.MINUTE, minute);
        String formatTime = new SimpleDateFormat("hh:mm a").format(cal.getTime());

答案 1 :(得分:1)

您可以使用SimpleDateFormat构建时间字符串,如下所述:

Convert java.util.Date to String

在您的情况下,您可以使用“HH:mm a”作为格式。

因此,您的示例代码应如下所示:

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, selectedHour);
calendar.set(Calendar.MINUTE, selectedMinute);

DateFormat dateFormat = new SimpleDateFormat("HH:mm a");

Date dateValue = calendar.getTime();
String requiredTime = dateFormat.format(dateValue);
TextView dimple = (TextView)findViewById(R.id.timeText);
dimple.setText(requiredTime);

希望有所帮助:)

答案 2 :(得分:0)

String str_hour = c_hour<10 ? "0"+String.valueOf(c_hour):String.valueOf(c_hour);   

String str_min = c_min<10 ? "0"+String.valueOf(c_min):String.valueOf(c_min);