如何根据小时和分钟获取dateTime

时间:2017-09-05 23:40:28

标签: java android datetime calendar

我在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);

谢谢大家

4 个答案:

答案 0 :(得分:2)

编辑:看看这个other stackoverflow post,了解为什么人们应该更喜欢使用Java 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: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());