如何根据小时和分钟
我在的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);
谢谢大家
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,它取决于你的创造力)
而这个答案是与日历,因为你在你的问题中标记日历,你也可以用别的东西比日历
困难在于如何将小时和分钟分配给cal.set。 10和50都只是例子,这些EditText上的值是动态的 – sai
你说的EditText,所以他会在第一的EditText在第二输入10,然后50!所以这2个edittext可以与变量相关,然后你使用集合中的变量。 最好的办法是使用现有的时间API,所以他会选择小时和分钟(这样他就可以不输入为例:23小时70分钟),那么你追上他们与时钟的干将。 – DetchKing
是很好的解释。我不得不改变设计。当点击具有HH:mm值的edittext时,我必须打开TimePicketDialog并选择适当的时间。从TimePicker选择时间它给出了选定的值的日期时间,所以它帮助 – sai
编辑:看看这个other stackoverflow post为什么一个应该更喜欢使用Java 8 java.time
类在Calendar
或Date
在你的情况下,为了解析在输入形式为“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);
很好地解释了答案,谢谢。我希望使用接受“ZoneId”的重载版本将时区传递给LocalDate.now(),以明确地表明我们要求在地球上特定地点的今天日期。可以使用例如'ZoneId.of(“Africa/Banjul”)'(替换相关地区和城市)或'ZoneId.systemDefault()'(使用设备的时区设置)。 –
您可以在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());
10:50(或用户输入的任何内容)如何进入? –
难道我得到的是否正确?用户输入一个时间,比如10:50 - 使用24小时制?由此你需要在输入的时间得到今天的日期,例如2017-09-06 10:50:00 - 对吧? –