반응형
Date 클래스
: 날짜와 시간 정보를 저장하는 클래스.
날짜를 표현할 때 사용하며 객체 간 날짜 정보를 주고 받을 때 매개 변수나 리턴 타입으로 주로 사용된다.
1. getTime() : 1970년 1월 1일 자정 이후의 시간을 밀리 초로 표시
package kr.or.ddit.study11;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DateExample {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
DateExample de = new DateExample();
de.dateMethod1();
}
public void dateMethod1() {
Date d = new Date();
/*
*
*/
// getTime() : 1970년 1월 1일 자정 이후의 시간을 밀리 초로 표시
// 밀리세컨드 = 천분의 1초
long time = d.getTime()/1000;
int min = 60;
int hour = min*60;
int day = hour*24;
int year = day*365;
int years = (int) (time/year);
time = time%year;
int days = (int) (time/day);
time = time%day;
int hours = (int) (time/hour);
time = time%hour;
int mins = (int) (time/min);
time = time%min;
System.out.println(time);
System.out.println(years + "년, " + days + "일, " + hours + "시간, " + mins + "분");
}
}
package kr.or.ddit.study11;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DateExample {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
DateExample de = new DateExample();
de.dateMethod2();
}
public void dateMethod2() {
Date d1 = new Date();
System.out.println(d1);
try {
// 1초 멈춤
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Date d2 = new Date();
long time = d2.getTime() - d1.getTime();
System.out.println(time); // 1014 -> 1초
}
}
package kr.or.ddit.study11;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DateExample {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
DateExample de = new DateExample();
de.dateMethod3();
}
public void dateMethod3() {
String str_date = "2023-12-28";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
/*
* parse -> String을 date 객체로 변환.
*/
try {
Date d = sdf.parse(str_date);
// 10일 뒤의 날짜를 체크
Date d2 = new Date(d.getTime() + 86400*10*1000); // 86400초 = 1일 & 밀리세컨트를 사용하기에 * 1000을 해줌.
System.out.println(d);
System.out.println(d2);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
package kr.or.ddit.study11;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DateExample {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
DateExample de = new DateExample();
de.dateMethod4();
}
public void dateMethod4() {
/*
* 스캐너를 통해 날짜를 입력 받고
* 해당 날짜에서 30일 뒤를 출력해보기.
*/
System.out.println("날짜를 입력하세요. (yyyy.mm.dd)");
String user_date = sc.next();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); // 소문자 mm의 경우 분을 이야기 함.
try {
Date d1 = sdf.parse(user_date);
Date d2 = new Date(d1.getTime() + (long)86400*1000*30); // 30일 뒤
System.out.println(d2);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
package kr.or.ddit.study11;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DateExample {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
DateExample de = new DateExample();
de.dateMethod5();
}
public void dateMethod5() {
/*
* Date - > 문자열로 변환.
*
* SimpleDateFormat
* yyyy -> 년도
* MM -> 월
* dd -> 일
* HH -> 24시 기준
* hh -> 12시 기준
* mm -> 분
* ss -> 초
*/
Date d = new Date(); // 호출된 시간.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd hh:mm ss");
String str_date = sdf.format(d);
System.out.println(str_date);
}
}
.parse | .format | |
차이점 | 문자열을 날짜 시간 객체로 변환 | 날짜 시간 객체를 문자열로 변환 |
package kr.or.ddit.study11;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class DateExample {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
DateExample de = new DateExample();
de.dateMethod6();
}
public void dateMethod6() {
/*
* 오늘로 부터 3일 뒤에 시간을 구하고
* 년도부터 초까지 출력 해보기.
*/
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MM dd hh:mm ss");
String str_date = sdf.format(d);
System.out.println(str_date);
Date d2 = new Date(d.getTime() + 86400*3*1000);
String str_date_3 = sdf.format(d2);
System.out.println(str_date_3);
}
}
Calendar 클래스
: 운영체제의 날짜와 시간을 얻을 때 사용하는 클래스.
달력을 표현하는 클래스로 추상 클래스이기에 new 연산자를 사용하는 방법은 쓸 수 없다.
+ 추상 메소드란 오버라이딩을 해야만 사용할 수 있는 클래스를 이야기 한다.
getInstance() 메소드를 이용하여 현재 운영체제에 설정된 시간대 기준으로 한 Calendar 하위 객체를 얻을 수 있다.
.YEAR : 원하는 년도로 변경, 증가, 감소
.MONTH : 원하는 월로 변경, 증가, 감소
.DATE : 원하는 일로 변경, 증가, 감소
set을 사용할 시에는 변경되며, add를 사용할 시 증가&감소 할 수 있다.
package kr.or.ddit.study11;
import java.util.Calendar;
import java.util.Date;
public class CalExample {
public static void main(String[] args) {
CalExample cal = new CalExample();
cal.method1();
}
public void method1() {
// 싱글톤 이용
// Calendar
// 1. set
// 2. getTime();
// 3. add
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2022); // 원하는 년도로 변경됨
cal.set(Calendar.DATE, 1); // 원하는 일로 변경됨
// cal.add(Calendar.DATE, 7); // 7일 증가
cal.add(Calendar.DATE, -7); // 7일 감소
cal.add(Calendar.MONTH, 4);
Date d = cal.getTime();
System.out.println(d);
}
}
반응형
'자바' 카테고리의 다른 글
[Java 초급] 21장 컬렉션 프레임워크 (0) | 2023.12.30 |
---|---|
[Java 초급] 20.5장 테스트 (0) | 2023.12.30 |
[Java 초급] 19장 예외 (0) | 2023.12.28 |
[Java 초급] 18.5장 테스트 (0) | 2023.12.27 |
[Java 초급] 18장 추상 클래스, 인터페이스, 중첩 클래스 (0) | 2023.12.27 |