2017-08-25 42 views
0

我得到的小時和分鐘了TimePickerDialog的:安卓:在正確的格式顯示時間,當我有時間和分鐘爲INT

public void onTimeSet(TimePicker view, int hour, int minute) { 
    // Do something with the time chosen by the user 
} 

我想在其他地方顯示這個時候。我的方法是檢查用戶設置爲12h或24h的格式

DateFormat.is24HourFormat() 

然後再手動建立時間文本。

我的問題:有沒有更好的方法來做到這一點?

回答

0

您可以強制timepicker使用timePicker.setIs24HourView(boolean)到12個小時選擇器:

timePicker.setIs24HourView(DateFormat.is24HourFormat(getContext())); 
+0

我的意思是你沒有手動處理時間文本。更改爲timepicker的格式並獲得所需的時間格式。 –

+0

謝謝你的回答。但是這樣我就強制每個用戶使用12格式,對吧?由於我是德國人,我想給用戶提供24小時格式的可能性。 –

1

可以使用的SimpleDateFormat這樣的24小​​時:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss); 

或更改HHhh得到12小時格式:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss); 

t母雞隻需使用:

dateFormat.format(yourDate); 

,你可以開始使用日曆:

SimpleDateFormat dateFormat; 
if (DateFormat.is24HourFormat()) { 
    dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss); 
} else { 
    dateFormat = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss); 
} 
Calendar c = new Calendar.getInstance(); 
c.set(Calendar.HOUR, yourIntHour); // Or HOUR_OF_DAY 
c.set(Calendar.MINUTE, yourIntMinute); 
Date d = c.getTime(); 
String dateResult = dateFormat.format(d); 

可以使用HOUR_OF_DAY代替HOUR: (soruce:的javadoc)

公共靜態最終詮釋HOUR

獲取和設置的字段編號,指示小時早上或 下午。 HOUR用於12小時制時鐘(0 - 11)。中午和 午夜由0表示,而不是由12例如,在10:04:15.250的PM HOUR是10.

公共靜態最終詮釋HOUR_OF_DAY

場的獲得數和設定指示一小時的一天。 HOUR_OF_DAY用於24小時制。例如,在10:04:15.250 PM HOUR_OF_DAY是22.

+0

謝謝,但我總是必須爲DateFormat.is24HourFormat()手動檢查?所以沒有辦法將timePicker的結果保存爲當我使用它時自動顯示正確格式的方式? –

+0

這可能是你的答案:https://stackoverflow.com/questions/11093182/date-formatting-based-on-user-locale-on-android我個人最喜歡最後一個答案 – tonakriz

+0

謝謝,那已經解決了我的下一個問題。 –

相關問題