我在edittext中有小时和分钟。(例如10:50)
如何根据以上编辑文本值10:50获取今天的DateTime(如yyyy-MM-dd HH:mm:ss)
更新: 这对我有用:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, selectedHour);
calendar.set(Calendar.MINUTE, selectedMinute);
谢谢大家
答案 0 :(得分:2)
编辑:看看这个other stackoverflow post,了解为什么人们应该更喜欢使用Java 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:mm”字符串。所以解决这个问题的方法是如上所示创建LocalTime.parse
的时间,然后使用静态方法LocalDate.now();
获取当前日期然后将这两个结果合并到LocalDateTime
对象中使用它的静态工厂方法LocalDateTime.of(date, time)
例如:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
LocalTime time = LocalTime.parse(timeInputString, formatter);
LocalDate date = LocalDate.now();
LocalDateTime dateTime = LocalDateTime.of(date, time);
答案 1 :(得分:1)
O(n)
现在,您可以将它们直接放在带变量的cal.set中(不要手动编写10,50,这取决于您的创造力)
这个答案适用于日历,因为您在问题中标记了日历,您还可以使用除日历之外的其他内容
答案 2 :(得分: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());
}
答案 3 :(得分:-1)
试试这个:
String dateTime = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss aa", Locale.getDefault())
.format(new Date());