有 Java 编程相关的问题?

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

java在字符串中比较两次

我试图与字符串进行比较:

开始时间:10:00结束时间:12:00

实际上,有一个包含我的值的开始时间数组和一个结束时间数组。在这种情况下,其结构如下:

 StartTimes[0] = "10:00"
 EndTimes[0] = "12:00"

(使用java)找出时间间隔的最佳方法是什么。开始时间总是在结束时间之前。我应该尝试使用正则表达式按分钟和小时分隔字符串,然后解析小时和分钟,比较,然后使用该信息确定差异,还是它们是java中比较时间的方法?注意:这些时间是24小时格式的,因此对于例如,下午1:00将显示为13:00


共 (6) 个答案

  1. # 1 楼答案

    您可以使用java。文本SimpleDataFormat和java。util。同时发生的帮助您解析、比较所需格式的时间单位

    SimpleDateFormat format = new SimpleDateFormat("HH:mm");
    Date date1 = format.parse(StartTimes[i]);
    Date date2 = format.parse(EndTimes[i]);
    long millis = date2.getTime() - date1.getTime(); 
    
    String hourminute = String.format("%02d:%02d",   TimeUnit.MILLISECONDS.toHours(millis),
                                                    TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)));
                        System.out.println(hourminute);
    

    完整的代码可以是这样的:

    import java.text.SimpleDateFormat;
    import java.util.concurrent.TimeUnit;
    import java.util.Date;
    
    class TimeCompare
    {
        public static void main (String[] args) throws java.lang.Exception
        {
    
            String[] StartTimes = {"10:00", "7:00"};
            String[] EndTimes = {"12:00", "14:56"};
            for (int i=0; i<StartTimes.length; i++){
                if (StartTimes!=null && StartTimes.length>0 && EndTimes!=null &&EndTimes.length>0){
                    SimpleDateFormat format = new SimpleDateFormat("HH:mm");
                    Date date1 = format.parse(StartTimes[i]);
                    Date date2 = format.parse(EndTimes[i]);
                    long millis = date2.getTime() - date1.getTime(); 
    
                    String hourminute = String.format("%02d:%02d",   TimeUnit.MILLISECONDS.toHours(millis),
                                                TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)));
                    System.out.println(hourminute);
    
                }
            }
    
        }
    
    
    }
    

    资料来源:

    How to calculate time difference in java?

    How to convert milliseconds to "hh:mm:ss" format?

  2. # 2 楼答案

    您可以使用

        String startTime = "10:00";
        String endTime = "12:00";
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
        Date d1 = sdf.parse(startTime);
        Date d2 = sdf.parse(endTime);
        long elapsed = d2.getTime() - d1.getTime(); 
        System.out.println(elapsed);
    
  3. # 3 楼答案

    您应该创建一个日期(现在)并在其中添加小时、分钟。 获取长时间并计算持续时间

        Date now = new Date();
        Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(timezone));
        Calendar.setTime(now);
        calendar.add(Calendar.Hour, 12);
        calendar.add(Calendar.MINUTE, 00);
        Date start = calendar.getTime();
    
        calendar.add(Calendar.Hour, 10);
        calendar.add(Calendar.MINUTE, 00);
        Date end = calendar.getTime();
    
        try {
            // in milliseconds
            long diff = d2.getTime() - d1.getTime();
    
            long diffMinutes = diff / (60 * 1000) % 60;
            long diffHours = diff / (60 * 60 * 1000) % 24;
    
            System.out.print(diffHours + " hours, ");
            System.out.print(diffMinutes + " minutes, ");
    
        } catch (Exception e) {
            e.printStackTrace();
        }
    
  4. # 4 楼答案

    使用拆分方法拆分2次,并从中计算和分析持续时间:

    问题样本:

    String StartTimes = "10:00";
    String EndTimes = "12:00";
    String startTimeParse[] = StartTimes.split(":");
    String endTimeParse[] = EndTimes.split(":");
    int firstHour = Integer.parseInt(startTimeParse[0]);
    int firstMinute = Integer.parseInt(startTimeParse[1]);
    int secondHour = Integer.parseInt(endTimeParse[0]);
    int secondMinute = Integer.parseInt(endTimeParse[1]);
    int durattionHour = secondHour - firstHour;
    int durattionMinutes = secondMinute - firstMinute;
    System.out.println("Duration : " +durattionHour+":"+durattionMinutes );
    
  5. # 5 楼答案

    爪哇。Java 8中的时间

    我手边没有一台电脑可以试试这个,但是你可以在新的java中做类似的事情。Java8中的时间包。不要混淆新的java。时间与臭名昭著的麻烦旧java。util。日期和日期。与Java捆绑的日历类

    LocalTime start = LocalTime.parse( "11:00" );
    LocalTime stop = LocalTime.parse( "14:00" );
    Duration duration = Duration.between( start, stop );
    
  6. # 6 楼答案

    没有这样的方法可以比较

    可以使用“:”拆分时间字符串。然后将小时和分钟解析为整数。然后计算持续时间

    int parseTimeString(String s) {
        String[] t = s.split(":");
        return Integer.parseInt(t[0]) * 60 + Integer.parseInt(t[1]); // minutes since 00:00
    }
    
    int durationInMinute = parseTimeString(EndTimes[0]) - parseTimeString(StartTimes[0]);