如何根据小时和分钟

问题描述:

我在的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 - 对吧? –

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

编辑:看看这个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的项目)。 –

你只需要使用这个功能。

// 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()); 
} 

试试这个:

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

10:50(或用户输入的任何内容)如何进入? –