张佳ZHJ-MEZHJ
欢迎光临!我们一直在努力

Calendar 클래스 예제 3 | 자바 JDK | 시간을 연산, 시분초 단위로

Calendar 클래스로 두 시간 사이를 계산할 수 있다. 날짜도 계산할 수 있지만 기본적으로 단위변환을 직접해줘야 한다.

 

앞서 밀리세컨드(1000분의 1초)로 받은 숫자를 가지고 날짜를 연산할 수 있었다. 두 시간 사이가 얼마나 되는지도 같은 방식으로 구할 수 있다.

 

우선 두 개의 Calendar 인스턴스가 필요하다. 두개의 시간이 바로 두 개의 객체이다. 자바에서는 사물뿐 아니라 시간이라는 개념도 클래스로 사용할 수 있다.

 

여러가지 방법으로 시간을 설정할 수 있다. 예제에서는 한번에 설정하는 방식을 선택했다. set 메소드는 년,월,일,시,분,초 의 순서로 매개변수가 들어간다. 날짜는 동일하게 2020년 1월 1일로 맞췄다. 여기서 월이 0인 것을 주의한다. Calendar 클래스는 월이 0부터 시작한다. 

 

두개의 시간을 get 메소드로 JLabel에 표시한다. 이 예제에서는 좀 번거러워도 스윙을 사용한다. System.out.println 이 빠른 실행결과는 좋지만 아무래도 질리기 쉽상이다.

 

* 두 시간을 연산 (시간 사이의 거리)

두 시간은 거리는 역시 밀리세컨드로 계산한다. 1,000으로 나누면 초가 된다.

 

앞쪽에 TIME_UNIT 상수는 시간, 분, 초를 계산하기 위해 만들었다. for 루프문의 알고리즘으로 동작한다.

 

A와 B 시간의 차이는 47,690초이고 3,600초로 나누면 시간이 나온다. 그리고 나머지 890초를 60초로 나눠서 분을 구하고, 나머지 50초가 나온다. 아래와 같은 연산과정이 담겨있다. dif1=0 까지 보이지 않더라도 실행이 된다.

 

 

시간은 중요하므로 프로그램에서도 시간을 잘 다룰 수 있어야 한다. (너무 클리셰이한가 ㅋ)

 

package com.kay.inter;

import java.awt.Font;
import java.util.Calendar;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class CalendarEX3 extends JFrame{
	Font f1;
	
	CalendarEX3(){
		
		final int[] TIME_UNIT = {3600,60,1};
		final String[] TIME_UNIT_NAME = {\"시간 \",\"분 \",\"초\"};
		
		f1 = new Font(\"배달의민족 도현\",Font.PLAIN,30);
		
		// today
		Calendar date1 = Calendar.getInstance();
		date1.set(2020, 0, 1, 10, 20, 30);
		
		// that day
		Calendar date2 = Calendar.getInstance();
		date2.set(2020, 0, 1, 23, 35, 20);
		
		
		String str1 = \"시간 1: \"   date1.get(Calendar.HOUR_OF_DAY)   \"시 \"   date1.get(Calendar.MINUTE)   \"분 \"  
				date1.get(Calendar.SECOND)   \"초 \";
		
		String str2 = \"시간 2: \"   date2.get(Calendar.HOUR_OF_DAY)   \"시 \"   date2.get(Calendar.MINUTE)   \"분 \"  
				date2.get(Calendar.SECOND)   \"초 \";
		
		
		long dif1 = (date2.getTimeInMillis() - date1.getTimeInMillis())/1000;
		
		String tmp =\"시간 차이 : \";
		
		for (int i=0; i<TIME_UNIT.length; i  ) {
			tmp  = dif1/TIME_UNIT[i]   TIME_UNIT_NAME[i];
			dif1 %= TIME_UNIT[i];
		}
		
	
		JLabel lb1 = new JLabel(tmp);
		lb1.setBounds(50, 200, 600, 40);
		lb1.setFont(f1);
		
		JLabel lb2 = new JLabel(str1);
		lb2.setBounds(50, 100, 600, 40);
		lb2.setFont(f1);
		
		JLabel lb3 = new JLabel(str2);
		lb3.setBounds(50, 150, 600, 40);
		lb3.setFont(f1);
		
		
		// JFrame
		add(lb1);add(lb2);add(lb3);
		setTitle(\"Calendar Example\");
		setSize(700,500);
		setLayout(null);
		setVisible(true);
	}

	public static void main(String[] args) {
		
		new CalendarEX3();
	}
}

 

 

赞(0) 打赏
未经允许不得转载:万事开头难-MEZHJ » Calendar 클래스 예제 3 | 자바 JDK | 시간을 연산, 시분초 단위로

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

张佳ZHJ-MEZHJ

登录账户注册账号

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏