有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何根据小时和分钟获取日期时间

我在编辑文本中有小时和分钟。(例如10:50)

如何根据上面的编辑文本值10:50获取今天的日期时间(如yyyy-MM-dd HH:MM:ss)

更新: 这对我很有用:

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

谢谢大家


共 (2) 个答案

  1. # 1 楼答案

    你只需要使用这个功能

    // 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());
    }
    
  2. # 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:mm”字符串中获取日期。因此,解决这个问题的方法是创建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);