2010-04-09 40 views
9

Tôi nhận được thời gian sử dụng một bảng chọn thời gian và hiển thị thời gian trong giao diện văn bản sử dụng đoạn mã sau ...Hiển thị Time in AM/PM định dạng trong android

private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     Toast.makeText(SendMail.this, "Your Appointment time is "+hourOfDay+":"+minute, Toast.LENGTH_SHORT).show(); 
     TextView datehid = (TextView)findViewById(R.id.timehidden); 
     datehid.setText(String.valueOf(hourOfDay)+ ":"+(String.valueOf(minute))); 
    } 
}; 

Bây giờ, vấn đề là khi tôi thiết lập thời gian là 8:00 pm sau đó tôi nhận được thời gian hiển thị như 20: 0 ... Tôi muốn hiển thị thời gian là 8:00 pm ... Làm thế nào tôi có thể làm điều đó ???

+1

Rất nhiều người đã trả lời câu hỏi của bạn, bạn chỉ cần không đáp ứng, không dấu như đã trả lời. Nó để lại ít động lực giúp bạn. – synic

+1

Ngoài ra, rất nhiều câu hỏi của bạn là trong thực tế trả lời, nhưng sau đó bạn đi vào để hỏi thêm câu hỏi trong các ý kiến, và vẫn để lại câu hỏi là chưa được trả lời. Bạn nên đánh dấu chúng là đã trả lời, và sau đó hỏi một câu hỏi mới. – synic

+0

Tôi vẫn là người mới vào Stack Overflow. Kể từ bây giờ, tôi sẽ đưa ra các đề xuất ur và làm điều đó cho phù hợp .. Cảm ơn các đề xuất có giá trị của bạn ... –

Trả lời

16

Tôi đã làm như thế này để đạt được điều đó.

private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     TextView datehid = (TextView)findViewById(R.id.timehidden); 
     if(hourOfDay>12) { 
      datehid.setText(String.valueOf(hourOfDay-12)+ ":"+(String.valueOf(minute)+"pm")); 
     } else if(hourOfDay==12) { 
      datehid.setText("12"+ ":"+(String.valueOf(minute)+"pm")); 
     } else if(hourOfDay<12) { 
      if(hourOfDay!=0) { 
       datehid.setText(String.valueOf(hourOfDay) + ":" + (String.valueOf(minute) + "am")); 
      } else { 
       datehid.setText("12" + ":" + (String.valueOf(minute) + "am")); 
      } 
     } 
    } 
};  
+0

+1 và cảm ơn, ý tưởng của bạn đã làm việc cho tôi. –

31
private String getReminingTime() { 
    String delegate = "hh:mm aaa"; 
    return (String) DateFormat.format(delegate,Calendar.getInstance().getTime()); 
} 
+0

đã làm việc cho tôi, cách rất đơn giản –

+0

làm việc theo yêu cầu, cảm ơn –

+0

Liệu nó có cung cấp 'Am/PM' không? Dường như nó sẽ không có số – eRaisedToX

2

Tôi đã làm như thế này để đạt được điều đó.

TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     myCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
     myCalendar.set(Calendar.MINUTE, minute); 
     update_From_Time(); 
    } 
}; 

DateFormat frmTime=DateFormat.getTimeInstance(); 
protected void update_From_Time() { 
    s = frmTime.format(myCalendar.getTime()); 
    btnFromTime.setText(s); 
} 
+0

Đây là một trong những hoàn hảo ... –

0

này đã làm việc cho tôi:

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
    String am_pm = ""; 

    Calendar datetime = Calendar.getInstance(); 
    datetime.set(Calendar.HOUR_OF_DAY, hourOfDay); 
    datetime.set(Calendar.MINUTE, minute); 

    if (datetime.get(Calendar.AM_PM) == Calendar.AM) 
     am_pm = "AM"; 
    else if (datetime.get(Calendar.AM_PM) == Calendar.PM) 
     am_pm = "PM"; 

    String strHrsToShow = (datetime.get(Calendar.HOUR) == 0) ?"12":datetime.get(Calendar.HOUR)+""; 

    ((Button)getActivity().findViewById(R.id.btnEventStartTime)).setText(strHrsToShow+":"+datetime.get(Calendar.MINUTE)+" "+am_pm); 
} 
1
int am_pm=mycalendar.get(Calendar.AM_PM); 
String amOrpm=((am_pm==Calendar.AM)?"am":"pm"); 

Nhưng theo SimpleDateFormat quan điểm của tôi sẽ được sử dụng tốt nhất, như thế này:

final Calendar c = Calendar.getInstance(TimeZone.getTimeZone("America/Chicago")); 
SimpleDateFormat format = new SimpleDateFormat("h:mm a"); 
format.setTimeZone(c.getTimeZone()); 
String myFormatted time = format.format(c.getTime()); 

Sẽ tốt hơn như lịch bằng cách mặc định sẽ trả về 00 cho 12 giờ chiều, mà bạn có thể không muốn.

5
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss a"); 
String currentTime = df.format(currnetDateTime.getTime()); 
+1

Đối với bất cứ ai có thể đoán những gì là 'currnetDateTime' trong mã Pravin giống như tôi đã được;), Đó là' Lịch currnetDateTime = Calendar.getInstance(); 'và sau đó' SimpleDateFormat df = new SimpleDateFormat ("HH: mm: ss a"); Chuỗi hiện tạiTime = df.format (currnetDateTime.getTime()); ' – eRaisedToX

1
Calendar now = Calendar.getInstance(); 
if(now.get(Calendar.AM_PM) == Calendar.AM){ 
    // AM 
    System.out.println(""+now.get(Calendar.HOUR)+":AM"); 
}else{ 
    // PM 
    System.out.println(""+now.get(Calendar.HOUR)+":PM"); 
} 
Các vấn đề liên quan