2017-09-05 47 views
-2

我在的EditText小時和分鐘來獲得日期時間(比方說10點50分)如何根據小時和分鐘

如何得到今天的日期時間(如YYYY-MM-DD HH:MM:SS)基於上述編輯文本值10:50

UPDATE: 這個工作對我來說:

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

謝謝大家

+0

難道我得到的是否正確?用戶輸入一個時間,比如10:50 - 使用24小時制?由此你需要在輸入的時間得到今天的日期,例如2017-09-06 10:50:00 - 對吧? –

回答

0
Calendar cal = new Calendar.getInstance();// today's date 
cal.set(Calendar.HOUR, 10); 
cal.set(Calendar.MINUTE, 50); 
cal.set(Calendar.SECOND, 0); 
     System.out.println(cal.getTime()); //see the result 

現在,它是由你直接把它們與cal.set變量(不手動寫10,50,它取決於你的創造力)

而這個答案是與日曆,因爲你在你的問題中標記日曆,你也可以用別的東西比日曆

+0

困難在於如何將小時和分鐘分配給cal.set。 10和50都只是例子,這些EditText上的值是動態的 – sai

+0

你說的EditText,所以他會在第一的EditText在第二輸入10,然後50!所以這2個edittext可以與變量相關,然後你使用集合中的變量。 最好的辦法是使用現有的時間API,所以他會選擇小時和分鐘(這樣他就可以不輸入爲例:23小時70分鐘),那麼你追上他們與時鐘的干將。 – DetchKing

+0

是很好的解釋。我不得不改變設計。當點擊具有HH:mm值的edittext時,我必須打開TimePicketDialog並選擇適當的時間。從TimePicker選擇時間它給出了選定的值的日期時間,所以它幫助 – sai

2

編輯:看看這個other stackoverflow post爲什麼一個應該更喜歡使用Java 8 java.time類在CalendarDate

在你的情況下,爲了解析在輸入形式爲「HH:mm」,您可以創建一個DateTimeFormatter並使用靜態方法LocalTime.parse(inputString, dateTimeFormatter)獲得LocalTime對象

例如:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm"); 
LocalTime time = LocalTime.parse(timeInputString, formatter); 

看看在Java documentation for DateTimeFormatter有關模式的更多信息,年,日,或什麼的。

如果您希望從字符串中獲得日期和時間(如「10:50」),您將無法使用LocalDateTime.parse方法,因爲它無法從「HH :毫米「字符串。因此,解決這個問題的方法是創建時間過的LocalTime.parse如上圖所示,然後使用靜態方法LocalDate.now();獲取當前日期,然後使用它的靜態工廠方法LocalDateTime.of(date, time)

例如這兩個結果結合成一個LocalDateTime對象:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm"); 
LocalTime time = LocalTime.parse(timeInputString, formatter); 
LocalDate date = LocalDate.now(); 
LocalDateTime dateTime = LocalDateTime.of(date, time); 
+1

很好地解釋了答案,謝謝。我希望使用接受「ZoneId」的重載版本將時區傳遞給LocalDate.now(),以明確地表明我們要求在地球上特定地點的今天日期。可以使用例如'ZoneId.of(「Africa/Banjul」)'(替換相關地區和城市)或'ZoneId.systemDefault()'(使用設備的時區設置)。 –

+0

您可以在Android Java 7中使用Java 8'java.time'類。[這個問題:如何在Android項目中使用ThreeTenABP]非常好地解釋了這個問題(https://stackoverflow.com/questions/38922754/how -to-使用-threetenabp功能於Android的項目)。 –

0

你只需要使用這個功能。

// hourMintText = "hh:mm" 
private String getTodayAsFormat(String hourMintText){ 
    String[] hourMinAsArray = hourMintText.split(":"); 
    Calendar calendar = Calendar.getInstance(); 

    calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hourMinAsArray[0])); 
    calendar.set(Calendar.MINUTE, Integer.parseInt(hourMinAsArray[1])); 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm", Locale.ENGLISH); 

    return simpleDateFormat.format(calendar.getTimeInMillis()); 
} 
-1

試試這個:

String dateTime = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss aa", Locale.getDefault()) 
         .format(new Date()); 
+2

10:50(或用戶輸入的任何內容)如何進入? –