2013-12-17 105 views
6

我有转换24小时格式为12小时格式的问题。这是我的代码。24小时格式为12小时格式

private TimePickerDialog.OnTimeSetListener mTimeSetListener = 
     new TimePickerDialog.OnTimeSetListener() { 

      @Override 
      public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
       // TODO Auto-generated method stub 
       ViewGroup vg=(ViewGroup) view.getChildAt(0); 
       hour = hourOfDay; 
       minutes = minute; 
       String am_pm = (hourOfDay < 12) ? "AM" : "PM"; 
       SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US); 
       String tme = hour +":"+ minutes+am_pm; 
       et1.setText(tme); 
      } 
     }; 

我转向从警告对话框timepicker对话,因为我不知道该怎么24小时改为12小时格式

et1.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       new TimePickerDialog(MainActivity.this, mTimeSetListener, hour, minutes, false).show(); 
      } 
     }); 

    } 

这是我已经把布尔印象证明假。

回答

11

尝试这个 -

private TimePickerDialog.OnTimeSetListener mTimeSetListener = 
new TimePickerDialog.OnTimeSetListener() { 

    @Override 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     // TODO Auto-generated method stub 
     hour = hourOfDay; 
     minutes = 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 min = ""; 
     if (minutes < 10) 
     min = "0" + minutes ; 
     else 
     min = String.valueOf(minutes); 

     // Append in a StringBuilder 
     String aTime = new StringBuilder().append(hour).append(':') 
     .append(min).append(" ").append(timeSet).toString(); 
     et1.setText(aTime); 
    } 
}; 
+0

谢谢先生!它的工作原理! – user3032164

1

你为什么不使用

timePicker.setIs24HourView(false);

+0

我尝试它已经,但结果是相同的。那只是时间选择器的视图。 – user3032164

2

有一个构造函数的参数

public TimePickerDialog (Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView) 

看到docs。并且用于格式化使用android.text.format.DateFormat

+0

是的,先生..我已经这样做..我很抱歉,因为缺乏信息。 – user3032164

1

请使用此代码

int Hour=0; 
int Minute=0; 
int new_hour=0; 
String new_minute=null; 
TimePickerDialog.OnTimeSetListener time = new TimePickerDialog.OnTimeSetListener() { 



public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     Hour = hourOfDay; 
     Minute = minute; 

     String time_form = hourOfDay + ":" + minute + ":00"; 
     int r = minute/10; 
     if (r == 0) { 
      new_minute = "0" + minute; 
     } else { 
      new_minute = minute + ""; 
     } 
     if (Hour > 12) { 
      new_hour = (hourOfDay - 12); 
      edit_text.setText(new StringBuilder().append(new_hour) 
        .append(":").append(new_minute) 
        + " PM"); 
     } else if (Hour == 12) { 

      new_hour = hourOfDay; 
      edit_text.setText(new StringBuilder().append(new_hour) 
        .append(":").append(new_minute) 
        + " PM"); 
     } 

     else { 
      new_hour = hourOfDay; 
      edit_text.setText(new StringBuilder().append(new_hour) 
        .append(":").append(new_minute) 
        + " AM"); 
     } 

    } 

}; 
4

我尝试知道我太晚了,但只有两条线使它完美。

private TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() { 
     @Override 
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      boolean isPM = (hourOfDay >= 12); 
      tvTime.setText(String.format("%02d:%02d %s", (hourOfDay == 12 || hourOfDay == 0) ? 12 : hourOfDay % 12, minute, isPM ? "PM" : "AM")); 
     } 
    }; 
0

这是我做到的。格式SimpleDateFormat的需要https://developer.android.com/reference/java/text/SimpleDateFormat.html#format

TimePickerDialog timePickerDialog= new TimePickerDialog(NotificationActivity.this, 
    new TimePickerDialog.OnTimeSetListener() { 
     @Override 
     public void onTimeSet(TimePicker timePicker, int hour, int minute) { 

      Time time = new Time(hour, minute, 0); 

      //little h uses 12 hour format and big H uses 24 hour format 
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("h:mma"); 

      //format takes in a Date, and Time is a sublcass of Date 
      String s = simpleDateFormat.format(time); 
      toTime.setText(s); 
     } 
    }, hour, minute, false); 
相关问题