자바 분 차이 계산 - jaba bun chai gyesan

자바에서 가끔 두 날짜의 간격 예를 들어 두 날짜의 일수나, 시간, 분, 초등을 구해야 할 때가 있습니다. 이럴 때는 대개 두 날짜를 getTime을 활용하여 밀리 세컨드로 변환한 후 두 날짜의 차이를 계산한 뒤 원하는 단위로 바꾸는 작업을 통해 계산합니다.

Date.getTime()
Date.getTime()은 Date를 밀리세컨드로 변환해서 long형 숫자 데이터로 반환합니다. 이를 이용하면 산술 연산으로 시간 차이를 쉽게 구할 수 있습니다.

1000밀리초는 1초로 계산되므로 getTime()으로 구한 값을 밀리초를 1000으로 나누면 초를 얻습니다. 이 초를 기본으로 하여 다른 시간 단위들도 계산할 수 있습니다.

초 : / 1000 
분 : / (1000 * 60)
시 : / (1000 * 60 * 60)

두 날짜 사이의 간격 계산하기

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

public class main {
    public static void main(String[] args) throws ParseException {
        String date1 = "2021/01/02"; //날짜1
        String date2 = "2021/01/01"; //날짜2
       
        Date format1 = new SimpleDateFormat("yyyy/MM/dd").parse(date1);
        Date format2 = new SimpleDateFormat("yyyy/MM/dd").parse(date2);
        
        long diffSec = (format1.getTime() - format2.getTime()) / 1000; //초 차이
        long diffMin = (format1.getTime() - format2.getTime()) / 60000; //분 차이
        long diffHor = (format1.getTime() - format2.getTime()) / 3600000; //시 차이
        long diffDays = diffSec / (24*60*60); //일자수 차이
        
        System.out.println(diffSec + "초 차이");
        System.out.println(diffMin + "분 차이");
        System.out.println(diffHor + "시 차이");
        System.out.println(diffDays + "일 차이");
    }
}
자바 분 차이 계산 - jaba bun chai gyesan

티스토리 뷰

상담관리에서 시간 간격을 구하기!!

public class Test{
  pulbic static void main(String[] args){
	//시간 설정
	String start="2009-12-08 오후 04:05:56";
	Calendar tempcal=Calendar.getInstance();
	SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd a hh:mm:ss");
	Date startday=sf.parse(start, new ParsePosition(0));

	long startTime=startday.getTime();

	//현재의 시간 설정	
	Calendar cal=Calendar.getInstance();
	Date endDate=cal.getTime();
	long endTime=endDate.getTime();
		
	long mills=endTime-startTime;
		
	//분으로 변환
	long min=mills/60000;
	
	StringBuffer diffTime=new StringBuffer();
	diffTime.append("시간의 차이는").append( min).append("분 입니다.");
	System.out.println(diffTime.toString());
  }
}

SimpleDateFormat 은 Date를 사용자가 지정한 형식에 맞게 출력할 수 있도록 하는 클래스이다.
잘 알아두면 날짜 출력시 편하다.
SimpleDateFormat 클래스의 parse()메소드는 지정한 텍스트를 Date형식으로 바꿔주는 메소드이다.
Date클래스의 getTime메소드는 설정된 시각을 밀리초로 변환해준다.(long타입)

원리는 텍스트형태로 시작시간을 받아 다시 밀리초형태로 변환한다.
후에 현재 시각을 다시 밀리초형태로 변환하여
변환한 시각끼리 차하여 남은 시간을 다시 분으로 변환해주는 것이다.

두 날짜 사이의 시간 / 분 / 초의 차이  계산

String dateStart = "11/03/14 09:29:58";
String dateStop = "11/03/14 09:33:43";

// Custom date format
SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss");  

Date d1 = null;
Date d2 = null;
try {
    d1 = format.parse(dateStart);
    d2 = format.parse(dateStop);
} catch (ParseException e) {
    e.printStackTrace();
}    

// Get msec from each, and subtract.
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000;         
long diffMinutes = diff / (60 * 1000);         
long diffHours = diff / (60 * 60 * 1000);                      
System.out.println("Time in seconds: " + diffSeconds + " seconds.");         
System.out.println("Time in minutes: " + diffMinutes + " minutes.");         
System.out.println("Time in hours: " + diffHours + " hours."); 

이 게시물은 Java에서 두 날짜의 차이를 계산하는 방법에 대해 설명합니다.

1. 사용 TimeUnit.convert() 방법

아이디어는 먼저 다음을 사용하여 두 날짜의 차이를 밀리초 단위로 구하는 것입니다. Date.getTime() 방법. 그럼 우리는 사용할 수 있습니다 convert() 의 방법 java.util.concurrent.TimeUnit enum은 주어진 단위의 주어진 시간을 인수의 단위로 변환합니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

importjava.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.concurrent.TimeUnit;

classMain

{

    publicstaticvoid main(String[]args)

    {

        Stringd1="10-20-2016";

        String d2="10-19-2016";

        Stringpattern ="MM-dd-yyyy";

        SimpleDateFormat sdf= newSimpleDateFormat(pattern);

        try{

            Date date1= sdf.parse(d1);

            Date date2 =sdf.parse(d2);

            // 두 날짜의 차이를 분 단위로 가져옵니다.

            longelapsedms= date1.getTime()- date2.getTime();

            longdiff =TimeUnit.MINUTES.convert(elapsedms, TimeUnit.MILLISECONDS);

            System.out.println(diff);

        }

        catch(ParseExceptione){

            e.printStackTrace();

        }

    }

}

다운로드  코드 실행

결과:

1440

 
위의 코드 스니펫은 시간대를 다음과 같이 간주하지 않습니다. java.util.Date 항상 있다 UTC. 또한 이것은 일광 절약 시간을 고려하지 않습니다.

2. 사용 java.time 패키지

Java 8부터는 다음을 사용해야 합니다. java.time 기존 Java 날짜-시간 API에 비해 많은 개선을 제공하는 패키지입니다. 다음은 두 날짜의 차이를 다음과 같이 계산하는 방법입니다. Duration Java 8 이상에서.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

importjava.time.Duration;

import java.time.ZonedDateTime;

classMain

{

    publicstaticvoidmain(String[] args)

    {

        ZonedDateTime now= ZonedDateTime.now();

        ZonedDateTime then = now.minusMonths(2).minusDays(10)

                                .minusMinutes(5).minusSeconds(40);

        Duration duration=Duration.between(then, now);

        System.out.println(duration);

        // System.out.println(duration.getSeconds());

        // System.out.println(duration.toMinutes());

        // System.out.println(duration.toHours());

        // System.out.println(duration.toDays());

    }

}

다운로드  코드 실행

결과:

PT1704H5M40S

 
당신이 가지고있는 경우 java.util.Date 객체로 변환해야 합니다. java.time.Instant 그런 다음 경과 시간을 Duration으로 계산합니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

importjava.text.ParseException;

import java.text.SimpleDateFormat;

import java.time.Duration;

import java.time.Instant;

import java.util.Date;

classMain

{

    publicstaticvoidmain(String[] args)

    {

        Stringd= "12/25/2018";

        SimpleDateFormat sdf=new SimpleDateFormat("MM/dd/yyyy");

        try{

            Date date=sdf.parse(d);

            Duration duration= Duration.between(date.toInstant(), Instant.now());

            System.out.println(duration);

        }

        catch(ParseExceptione){

            e.printStackTrace();

        }

    }

}

다운로드  코드 실행

결과:

PT3880H26M38.942S

3. 조다 시간 사용하기

Java 8 이전에는 많은 Java 프로젝트에서 Joda-Time 라이브러리 날짜 및 Time 클래스. Java 8 이전의 표준 날짜 및 시간 클래스가 열악하기 때문입니다. 그러나 의 도입으로 java.time Java SE 8의 패키지에서 Joda-Time 팀은 사용자에게 다음으로 마이그레이션하도록 요청했습니다. java.time (JSR-310).

프로젝트에서 Joda-Time 라이브러리를 사용 중이고 두 날짜 사이의 총 일수만 원하면 새로운 Days Joda-Time 버전 1.4의 클래스입니다.

Daysd= Days.daysBetween(startDate,endDate);

int days=d.getDays();

 
두 날짜 사이의 총 일, 주, 월 및 년 수를 계산하려면 다음이 필요합니다. Period. 기본적으로 이렇게 하면 두 날짜-시간 간의 차이가 "1개월, 2주, 4일 및 7시간"과 같은 부분으로 분할됩니다.

Periodp=new Period(startDate,endDate);

 
다음을 사용하여 추출할 필드를 제어할 수 있습니다. PeriodType.

Periodp=new Period(startDate,endDate, PeriodType.yearMonthDay());

 
이 예에서는 주 또는 시간 필드를 반환하지 않습니다. 따라서 이전 예는 "1개월 18일"이 됩니다.

이것이 Java에서 두 날짜의 차이를 계산하는 것입니다.


읽어 주셔서 감사합니다.

우리의 온라인 컴파일러 C, C++, Java, Python, JavaScript, C#, PHP 및 기타 널리 사용되는 프로그래밍 언어를 사용하여 주석에 코드를 게시합니다.

우리처럼? 우리를 친구에게 소개하고 우리가 성장할 수 있도록 도와주세요. 행복한 코딩 🙂