Рубрики
Без рубрики

Java – Время, прошедшее в днях, часах, минутах, секундах

– Java – Время, прошедшее в днях, часах, минутах, секунд

Два примера Java показывают, как распечатать прошедшее время в формате дней, часов, минут и секунд.

1. Стандартные API-интерфейсы даты JDK

Вам нужно рассчитать прошедшее время вручную.

package com.mkyong.dateUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTimeUtils {

	public static void main(String[] args) {
		
	  DateTimeUtils obj = new DateTimeUtils();
	  SimpleDateFormat simpleDateFormat = 
                new SimpleDateFormat("dd/M/yyyy hh:mm:ss");

	  try {
			
		Date date1 = simpleDateFormat.parse("10/10/2013 11:30:10");
		Date date2 = simpleDateFormat.parse("13/10/2013 20:35:55");
			
		obj.printDifference(date1, date2);
			
	  } catch (ParseException e) {
		e.printStackTrace();
	  }
		
	}
	
	//1 minute = 60 seconds
	//1 hour = 60 x 60 = 3600
	//1 day = 3600 x 24 = 86400
	public void printDifference(Date startDate, Date endDate){
	
		//milliseconds
		long different = endDate.getTime() - startDate.getTime();
		
		System.out.println("startDate : " + startDate);
		System.out.println("endDate : "+ endDate);
		System.out.println("different : " + different);
		
		long secondsInMilli = 1000;
		long minutesInMilli = secondsInMilli * 60;
		long hoursInMilli = minutesInMilli * 60;
		long daysInMilli = hoursInMilli * 24;

		long elapsedDays = different / daysInMilli;
		different = different % daysInMilli;
		
		long elapsedHours = different / hoursInMilli;
		different = different % hoursInMilli;
		
		long elapsedMinutes = different / minutesInMilli;
		different = different % minutesInMilli;
		
		long elapsedSeconds = different / secondsInMilli;
		
		System.out.printf(
		    "%d days, %d hours, %d minutes, %d seconds%n", 
		    elapsedDays,
		    elapsedHours, elapsedMinutes, elapsedSeconds);
	
	}
	
}

Выход

startDate : Thu Oct 10 11:30:10 SGT 2013
endDate : Sun Oct 13 20:35:55 SGT 2013
different : 291945000
3 days, 9 hours, 5 minutes, 45 seconds

2. Пример времени Джоды

Joda-time – это предпочтительная библиотека даты и времени Java, она содержит API-интерфейсы для вычисления прошедшего времени и получения его в формате лет, месяцев, дней, часов, минут и секунд.

package com.mkyong.dateUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.joda.time.Interval;
import org.joda.time.Period;

public class DateTimeUtils {

	public static void main(String[] args) {
		
	  DateTimeUtils obj = new DateTimeUtils();
	  SimpleDateFormat simpleDateFormat = 
               new SimpleDateFormat("dd/M/yyyy hh:mm:ss");

	  try {
			
		Date date1 = simpleDateFormat.parse("10/10/2013 11:30:10");
		Date date2 = simpleDateFormat.parse("13/11/2014 20:35:55");
	
		obj.printDifference(date1, date2);	
			
	  } catch (ParseException e) {
		e.printStackTrace();
	  }
		
	}
	
	public void printDifference(Date startDate, Date endDate){
		
	  Interval interval = 
               new Interval(startDate.getTime(), endDate.getTime());
	  Period period = interval.toPeriod();
	  
          System.out.printf(
	       "%d years, %d months, %d days, %d hours, %d minutes, %d seconds%n", 
	       period.getYears(), period.getMonths(), period.getDays(),
	       period.getHours(), period.getMinutes(), period.getSeconds());
		
	}
}

Выход

1 years, 1 months, 3 days, 9 hours, 5 minutes, 45 seconds

Рекомендации

  1. API даты Java
  2. Joda-Время – Дата и время Java интерфейс прикладного программирования
  3. Как Рассчитать Затраченное/Время Выполнения В Java

Оригинал: “https://mkyong.com/java/java-time-elapsed-in-days-hours-minutes-seconds/”