How to calculate time difference in java?

后端 未结 17 1389
醉酒成梦
醉酒成梦 2020-11-22 16:33

I want to subtract two timeperiods say 16:00:00 from 19:00:00. Is there any java function for this? The results can be in milliseconds, seconds, or minutes.

相关标签:
17条回答
  • 2020-11-22 17:07
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class Main {
    public static void main(String[] args) throws Exception{
        String time1 = "12:00:00";
        String time2 = "12:01:00";
        SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
        Date date1 = format.parse(time1);
        Date date2 = format.parse(time2);
        long difference = date2.getTime() - date1.getTime();
        System.out.println(difference/1000);
    }}
    

    throws exception handles parsing exceptions

    0 讨论(0)
  • 2020-11-22 17:09

    Java 8 has a cleaner solution - Instant and Duration

    Example:

    import java.time.Duration;
    import java.time.Instant;
    ...
    Instant start = Instant.now();
    //your code
    Instant end = Instant.now();
    Duration timeElapsed = Duration.between(start, end);
    System.out.println("Time taken: "+ timeElapsed.toMillis() +" milliseconds");
    
    0 讨论(0)
  • 2020-11-22 17:11
    String start = "12:00:00";
    String end = "02:05:00";
    
    SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); 
    
    Date date1 = format.parse(start);
    
    Date date2 = format.parse(end);
    
    long difference = date2.getTime() - date1.getTime(); 
    
    int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference);
    
    if(minutes<0)minutes += 1440; 
    

    Now minutes will be the correct duration between two time (in minute).

    0 讨论(0)
  • 2020-11-22 17:15
        /*
     * Total time calculation.
     */
    private void getTotalHours() {
        try {
            // TODO Auto-generated method stub
            if (tfTimeIn.getValue() != null && tfTimeOut.getValue() != null) {
                Long min1 = tfTimeOut.getMinutesValue();
                Long min2 = tfTimeIn.getMinutesValue();
                Long hr1 = tfTimeOut.getHoursValue();
                Long hr2 = tfTimeIn.getHoursValue();
                Long hrsTotal = new Long("0");
                Long minTotal = new Long("0");
                if ((hr2 - hr1) == 1) {
                    hrsTotal = (long) 1;
                    if (min1 != 0 && min2 == 0) {
                        minTotal = (long) 60 - min1;
                    } else if (min1 == 0 && min2 != 0) {
                        minTotal = min2;
                    } else if (min1 != 0 && min2 != 0) {
                        minTotal = min2;
                        Long minOne = (long) 60 - min1;
                        Long minTwo = min2;
                        minTotal = minOne + minTwo;
                    }
                    if (minTotal >= 60) {
                        hrsTotal++;
                        minTotal = minTotal % 60;
                    }
                } else if ((hr2 - hr1) > 0) {
                    hrsTotal = (hr2 - hr1);
                    if (min1 != 0 && min2 == 0) {
                        minTotal = (long) 60 - min1;
                    } else if (min1 == 0 && min2 != 0) {
                        minTotal = min2;
                    } else if (min1 != 0 && min2 != 0) {
                        minTotal = min2;
                        Long minOne = (long) 60 - min1;
                        Long minTwo = min2;
                        minTotal = minOne + minTwo;
                    }
                    if (minTotal >= 60) {
                        minTotal = minTotal % 60;
                    }
                } else if ((hr2 - hr1) == 0) {
                    if (min1 != 0 || min2 != 0) {
                        if (min2 > min1) {
                            hrsTotal = (long) 0;
                            minTotal = min2 - min1;
                        } else {
                            Notification.show("Enter A Valid Time");
                            tfTotalTime.setValue("00.00");
                        }
                    }
                } else {
                    Notification.show("Enter A Valid Time");
                    tfTotalTime.setValue("00.00");
                }
                String hrsTotalString = hrsTotal.toString();
                String minTotalString = minTotal.toString();
                if (hrsTotalString.trim().length() == 1) {
                    hrsTotalString = "0" + hrsTotalString;
                }
                if (minTotalString.trim().length() == 1) {
                    minTotalString = "0" + minTotalString;
                }
                tfTotalTime.setValue(hrsTotalString + ":" + minTotalString);
            } else {
                tfTotalTime.setValue("00.00");
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    0 讨论(0)
  • 2020-11-22 17:16

    Try this:

    public String timeDifference8(String startTime, String endTime) {
        LocalTime initialTime = LocalTime.parse(startTime);
        LocalTime finalTime =LocalTime.parse(endTime);
        StringJoiner joiner = new StringJoiner(":");
        long hours = initialTime.until( finalTime, ChronoUnit.HOURS);
        initialTime = initialTime.plusHours( hours );
        long minutes = initialTime.until(finalTime, ChronoUnit.MINUTES);
        initialTime = initialTime.plusMinutes( minutes );
        long seconds = initialTime.until( finalTime, ChronoUnit.SECONDS);
        joiner.add(String.valueOf(hours));
        joiner.add(String.valueOf(minutes));
        joiner.add(String.valueOf(seconds));
        return joiner.toString();
    }
    
    0 讨论(0)
提交回复
热议问题