๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/JAVA

[Java] 11์ผ์ฐจ : ์ž๋ฐ”์˜ ๊ธฐ๋ณธ API ํด๋ž˜์Šค 4 - (๋‚ ์งœ)

by ๋”ฐ๊ถˆ 2024. 2. 29.

 

Calendar

 

๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๊ฐ์ฒด ๋ชจ๋ธ๋ง ํ™” ํ•œ ํด๋ž˜์Šค๋กœ ๋…„, ์›”, ์ผ, ์š”์ผ, ์‹œ, ๋ถ„ ์ดˆ๊นŒ์ง€์˜ ์‹œ๊ฐ„๊ณผ ๋‚ ์งœ์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ œ๊ณต

Calender๋Š” ์ถ”์ƒ ํด๋ž˜์Šค์ด๋ฏ€๋กœ ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์‹ค์ œ์ ์ธ ๋ฉ”์†Œ๋“œ ๊ตฌํ˜„์€ Calendar ํด๋ž˜์Šค์˜ ์„œ๋ธŒ ํด๋ž˜์Šค์ธ GregorianCalendar ํด๋ž˜์Šค์— ์ •์˜๋˜์–ด ์žˆ์Œ

 

package ch07.unit05;

import java.util.Calendar;

public class Ex01 {

	public static void main(String[] args) {
		// ์‹œ์Šคํ…œ ๋‚ ์งœ๋ฅผ ์ด์šฉํ•˜์—ฌ Calendar ๊ฐ์ฒด ์ƒ์„ฑ
		Calendar cal = Calendar.getInstance();
		
		// %tF : ๋…„- ์›” ์ผ %tA :์š”์ผ %tT:์‹œ๊ฐ„
		//String s = String.format("tF %tA %tT",cal,cal,cal);
		String s = String.format("%1$tF %1$tA %1$tT",cal);
		System.out.println(s);
		
		System.out.println("๋…„๋„:"+cal.get(Calendar.YEAR));
		System.out.println("์›”:"+(cal.get(Calendar.MONTH)+1));
		// int n = cal.get(Calender.MONTH)
		// Calendar.Month : 0~11
		System.out.println("์ผ:"+cal.get(Calendar.DATE));
		System.out.println("์ผ:"+cal.get(Calendar.DAY_OF_MONTH)); 
		
		
		System.out.println("์ผ:"+cal.get(Calendar.DAY_OF_WEEK)); 
		System.out.println("ํ˜„์žฌ์š”์ผ์ด ์ด๋‹ฌ์˜ ๋ช‡๋ฒˆ์งธ ์š”์ผ?:" + cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));
		System.out.println("์˜ฌํ•ด์˜ ํ˜„์žฌ ์ฃผ์ฐจ : " + cal.get(Calendar.WEEK_OF_YEAR));
		System.out.println("์ด๋‹ฌ์˜ ํ˜„์žฌ ์ฃผ์ฐจ : " + cal.get(Calendar.WEEK_OF_MONTH));
		System.out.println("์˜ค์ „/์˜คํ›„:" + cal.get(Calendar.AM_PM));
		// ์˜ค์ „์ด๋ฉด 1 , ์˜คํ›„๋ฉด 0 ๋‚˜์˜ด 
		
		System.out.println("์‹œ๊ฐ„(0~11): " + cal.get(Calendar.HOUR));
		System.out.println("์‹œ๊ฐ„(0~23): " + cal.get(Calendar.HOUR_OF_DAY));
		System.out.println("๋ถ„:" + cal.get(Calendar.MINUTE));
		System.out.println("์ดˆ:" + cal.get(Calendar.SECOND));
		System.out.println("1000๋ถ„์˜ 1์ดˆ(ms)" + cal.get(Calendar.MILLISECOND));
		System.out.println("์ด๋‹ฌ์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ๋Š” : "+ cal.getActualMaximum(Calendar.DATE));
		
		// 2024๋…„ 5์›” 5์ผ๋กœ ๋‚ ์งœ ๋ณ€๊ฒฝ
		cal.set(2024,5-1,5);
		System.out.printf("%tF %tA\n",cal,cal);
		
		// 2024.1.15์ผ์— ๋งŒ๋‚ฌ๋‹ค 100์ผํ›„๋Š”
		cal.set(2024,1-1,15);
		cal.add(Calendar.DATE, 100);
		System.out.printf("%tF %tA\n",cal,cal);
		
		// 1970.1.1 0:0:0 ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ€๋ฆฌํ†  ๋‹จ์œ„๋กœ ํ™˜์‚ฐํ•˜์—ฌ ๋ฐ˜ํ™˜
		
		Calendar cal2 = Calendar.getInstance();
		long t = cal2.getTimeInMillis();
		System.out.println(t);

	}

}

 

 

 

package ch07.unit05;

import java.util.Calendar;

public class Ex02 {

	public static void main(String[] args) {
		Calendar cal = Calendar.getInstance();
		Calendar cal2 = Calendar.getInstance();
		
		// 2024-05-05
		cal.set(2024,5-1,8);
		System.out.printf("%tT\n",cal);
		
		//์š”์ผ์„ ์ผ์š”์ผ๋กœ ๋ณ€๊ฒฝ
		cal.set(Calendar.DAY_OF_WEEK, 1); // ์š”์ผ์„ ์ผ์š”์ผ๋กœ ๋ฐ”๊ฟ”~ 
		System.out.printf("%tF\n",cal); // ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๋‚ ์งœ 28์ผ๋กœ ์ธ์‹ํ•ด์„œ 
		
		/*
		 -์š”์ผ์€ ์ƒ์„ฑ๋œ Calendar์˜ ์ดˆ๊ธฐ ๋‚ ์งœ์˜ ์ผ์š”์ผ๋กœ ๋ณ€๊ฒฝ
		 (ํ˜„์žฌ ์‹œ์Šคํ…œ ๋‚ ์งœ๊ฐ€ ์žˆ๋Š” ์ฃผ์˜ ์ผ์š”์ผ)
		 - get() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉด ์‹œ๊ฐ„์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค. 
		 - set() ๋ฉ”์†Œ๋“œ๋Š” Calendar์˜ ํ•„๋“œ๊ฐ’์€ ๋ณ€๊ฒฝ ๋˜์ง€๋งŒ ์‹ค์ œ ๋‚ ์งœ๋Š” 
		  ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.
		  ๋”ฐ๋ผ์„œ, set()์„ ์ด์šฉํ•˜์—ฌ ๋‚ ์งœ๋ฅผ ๋ณ€๊ฒฝํ•œ ๊ฒฝ์šฐ
		  get(),getTime(),getTimeMillns()  ๋“ฑ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ
		  ํ˜ธ์ถœํ•˜์—ฌ ๋‚ ์งœ๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค.
		  set()์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•ด๋„ ์—ฌ๋Ÿฌ๋ฒˆ์˜ ๋ถˆํ•„์š”ํ•œ ๊ณ„์‚ฐ์„ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š๋Š”๋‹ค.
		 */
		
		System.out.println("-----------------");
		
		cal2.set(2024,5-1,8);
		System.out.printf("%tT\n",cal);
		cal2.getTime();
		
		cal2.set(Calendar.DAY_OF_WEEK, 1);
		System.out.printf("%tF\n",cal2); 
		
	}

}

 

 

package ch07.unit05;

import java.util.Calendar;

public class Ex04 {

	public static void main(String[] args) {
		Calendar cal = Calendar.getInstance();
		cal.set(2024, 7-1,30);
		cal.getTime(); //set() ๋ฉ”์†Œ๋“œ ์‹คํ–‰ ํ›„ get()๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ์‹ค์ œ ์‹ค์ œ ๋‚ ์งœ ๋ณ€๊ฒฝ 
		//Calendar cal2 = Calendar.getInstance();

		//์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฐ’์„ ๋ณต์‚ฌ
		//Calendar cal2 = (Calendar)cal.clone();		
		//System.out.printf("%tF %tF\n",cal,cal2); ๊ฐ™์€ ๋‚ ์งœ ์ถœ๋ ฅ
		//System.out.println(cal==cal2); // false 
		
		
		//์ฃผ์˜ ์‹œ์ž‘
		Calendar sday = (Calendar)cal.clone();
		sday.set(Calendar.DAY_OF_WEEK, 1);
		System.out.printf("์ฃผ์‹œ์ž‘: %tF\n", sday);
		
		//์ฃผ์˜ ๋งˆ์ง€๋ง‰ (ํ† ์š”์ผ) 
		Calendar eday = (Calendar)cal.clone();
		eday.set(Calendar.DAY_OF_WEEK, 7);
		System.out.printf("์ฃผ์‹œ์ž‘: %tF\n", eday);
		
		
	}

}

 

 

Date 

๋‚ ์งœ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋กœ ๊ฐ์ฒด๊ฐ„์˜ ๋‚ ์งœ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„๋•Œ ์‚ฌ์šฉ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ƒ์„ฑ์ž๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ Deprecated(๋น„ ๊ถŒ์žฅ) ๋˜์–ด ํ˜„์žฌ๋Š” Date() ์ƒ์„ฑ์ž๋งŒ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. Date() ์ƒ์„ฑ์ž๋Š” ์ปดํ“จํ„ฐ์˜ ํ˜„์žฌ ๋‚ ์งœ๋ฅผ ์ฝ์–ด Date๊ฐ์ฒด๋กœ ๋งŒ๋“ ๋‹ค. Date now = new Date() 

 

package ch07.unit05;

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

public class Ex11_Date {

	public static void main(String[] args) {
		// ํ˜„์žฌ ์‹œ์Šคํ…œ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ date ๊ฐ์ฒด ์ƒ์„ฑ
		Date date = new Date();
		System.out.println(date);

		// 1970.1.1 0:0:0๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ€๋ฆฌํ†  ๋‹จ์œ„๋กœ ํ™˜์‚ฐํ•˜์—ฌ ๋ฐ˜ํ™˜
		long t = date.getTime();
		System.out.println(t); // 1709101885941

		Date date2 = new Date(1709101885941L);
		// date ๊ฐ€ date2 ๋ณด๋‹ค ์ดํ›„ ๋‚ ์งœ ์ธ์ง€ ํ™•์ธ
		System.out.println(date.after(date2));

		// SimpleDateFormat; Date => String ; Date <= String
		// Date => String

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy๋…„ MM์›” dd์ผ HH:mm:ss");
		String s = sdf.format(date);
		System.out.println(s);

		// String > Date
		s = "2024-05-06";
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");

		try {
			// ์˜ˆ์™ธ๋ฅผ ๋‚ดํฌํ•˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ
			Date date3 = sdf2.parse(s);

			s = sdf.format(date3);
			System.out.println(s);

		} catch (ParseException e) { // <ํŒŒ์‹ฑ์˜ˆ์™ธ
			// ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ• ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ
			e.printStackTrace();
		}

	}
}

 

package ch07.unit05;

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

public class Ex12 {

	public static void main(String[] args) {
		// ์ƒ๋…„์›”์ผ๋ถ€ํ„ฐ ์˜ค๋Š˜ ๊นŒ์ง€์˜ ๋‚ ์ˆ˜ ๊ณ„์‚ฐ
		
		Date date = new Date();; // ์‹œ์Šคํ…œ ์˜ค๋Š˜ ๋‚ ์งœ 

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		
		try {
			String s ="1911-01-01";
			Date date2 = sdf.parse(s);
			
			// ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ
			long diff = (date.getTime() - date2.getTime())/(1000*60*60*24);
			
			System.out.println("์‚ด์•„์˜จ๋‚ ์ˆ˜ :"+diff);
			
		} catch (Exception e) {
			// TODO: handle exception
		}
		
	}

}

 

 

package ch07.unit05;

import java.util.Calendar;
import java.util.Date;

public class Ex13 {

	public static void main(String[] args) {
		Calendar cal = Calendar.getInstance();
		System.out.printf("%tF\n",cal);
		
		// Calendar > java.util.Date๋กœ ๋ณ€ํ™˜
		
		Date date = cal.getTime();
		System.out.println(date);
		
		/*
		 * jdk 9๋ถ€ํ„ฐ๋Š” java.sql.Date๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ์˜ ๋ชจ๋“ˆ์„
		 * ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค. (module-info.java ํŒŒ์ผ)
		 * requires java.se;
		 * 
		 */

		// java.util.Date > java.sql.Date๋กœ ๋ณ€ํ™˜
		// java.sql.Date : DB์— ๋‚ ์งœ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ DB์— ์ €์žฅ๋œ ๋‚ ์งœ ์ถ”์ถœ 
	
		java.sql.Date date2 = new java.sql.Date(date.getTime());
		System.out.println(date2);
	
		//java.util.Date > Calendar๋กœ ๋ณ€ํ™˜
		cal.setTime(date);
		System.out.printf("%tF\n",cal);
	
	}

}

 

 

Math


ํด๋ž˜์Šค๋Š” ์ˆ˜ํ•™(Mathematics)๊ณผ ๊ด€๋ จ๋œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค๋กœ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์ง€๋งŒ private ์œผ๋กœ ์„ ์–ธ๋˜์–ด ์™ธ๋ถ€์—์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค. ๋ชจ๋“  ๋ฉ”์†Œ๋“œ๊ฐ€ staic์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

Random

 

์—ฌ๋Ÿฌ ํ˜•ํƒœ์˜ ๋‚œ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค. Math ํด๋ž˜์Šค์˜ ์ •์  ๋ฉ”์†Œ๋“œ์ธ random()๋„ ๋‚œ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์ด์ง€๋งŒ 0..~1.0์‚ฌ์ด์˜ ์‹ค์ˆ˜๋งŒ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ํ˜•ํƒœ์˜ ๋‚œ์ˆ˜๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ์—ฐ์‚ฐ์„ ํ•„์š”๋กœ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ž๋ฐ”๋Š” ์—ฌ๋Ÿฌ ํ˜•ํƒœ์˜ ๋‚œ์ˆ˜๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ์ฃผ๋Š” Random ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

 

Formatter

ํ˜•์‹ ๋ฌธ์ž์—ด์„ ์ œ๊ณตํ•˜๊ณ  ์ด ๋ฌธ์ž์—ด์—์„œ ์ง€์ •ํ•œ ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ํ˜•์‹ํ™” ๋œ๋‹ค. format() ๋ฉ”์†Œ๋“œ์˜ ํ˜•์‹ ๋ฌธ์ž์—ด์ธ format๋ฌธ์ž์—ด์€ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์€ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ง€์ •ํ•˜๊ณ  ๊ทธ ์ค‘๊ฐ„์— %๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ˜•์‹ํ™” ์ธ์ž๋ฅผ ์ง€์ •ํ•œ๋‹ค. ์ด ํ˜•์‹ํ™” ์ธ์ž๋Š” ๋ช‡ ๊ฐœ๋ฅผ ๋„ฃ์–ด๋„ ์ƒ๊ด€์—†์ง€๋งŒ, ๋‘ ๋ฒˆ์งธ ์ธ์ž์ธ ๋น„์ •ํ˜• ์ธ์ž์—์„œ ํ˜•์‹ํ™” ์ธ์ž์˜ ์ˆ˜๋งŒํผ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

DateFormat

๊ตญ๊ฐ€๋ณ„ ์„ค์ •๊ณผ ์ƒ๊ด€์—†์ด ๋‚ ์งœ ๋˜๋Š” ์‹œ๊ฐ„์„ ํ˜•์‹ํ™”(๋‚ ์งœ → ํ…์ŠคํŠธ)ํ•˜๊ฑฐ๋‚˜ ๊ตฌ๋ฌธ ๋ถ„์„(ํ…์ŠคํŠธ →๋‚ ์งœ)์„ ์œ„ํ•œ abstract ํด๋ž˜์Šค์ด๋‹ค. ๋‚ ์งœ๋Š” Date ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ 1970๋…„ 1์›” 1์ผ 00:00:00 GMT ์ดํ›„ ๋ฐ€๋ฆฌ ์ดˆ๋กœ ํ‘œ์‹œ๋œ๋‹ค. DateFormat์€ ์ถ”์ƒํด๋ž˜์Šค์ด๋ฏ€๋กœ ํ˜„์žฌ ๋กœ์ผ€์ผ์˜ ๋‚ ์งœ๋ฅผ ํ˜•์‹ํ™”ํ•˜๋ ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •์  (static)ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

SimpleDateFormat

DateFormat ํด๋ž˜์‹œ๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋กœ Date ๊ฐ์ฒด๋ฅผ ํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ ํ•˜๊ฑฐ๋‚˜ ํ…์ŠคํŠธ๋ฅผ Date ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค