package k20231206;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class DateTimeTest {
public static void main(String[] args) {
// 현재 컴퓨터 시스템의 날짜와 시간을 얻어온다
Date date = new Date();
System.out.println(date);
// 날짜, 시간 서식 지정하기
// 서식문자를 제외한 나머지 문자는 입력한 그대로 출력된다.
// SimpleDateFormat sdf = new SimpleDateFormat("날짜/시간 서식");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 E요일 HH시 mm분 ss초");
// 작성한 서식은 format() 메소드를 사용해서 적용한다
System.out.println(sdf.format(date));
SimpleDateFormat sdf2 = new SimpleDateFormat("yy.MM.dd(E) a h:mm:ss.SSS");
System.out.println(sdf2.format(date));
// 생성자 2번째 인수로 Locale을 지정할 수 있다.
SimpleDateFormat sdf3 = new SimpleDateFormat("E MMMM dd yyyy a h:mm:ss.SSS", Locale.US);
System.out.println(sdf3.format(date));
System.out.println("=========================================================");
// 날짜, 시간 데이터에서 년, 월, 일, 시, 분, 초 얻어오기 Get메소드 // 집어넣기 Set메소드
// Date 클래스는 1900년 1월 1일 자정을 기준으로 날짜 데이터를 처리하게끔 설계가 되었다.
// 년도를 얻어와서 1900을 더해야 한다.
System.out.println("년: " + (date.getYear() + 1900));
// 월을 0~11로 처리하므로 월은 얻어와서 1을 더해야 한다
System.out.println("월: " + (date.getMonth() + 1));
System.out.println("일: " + date.getDate());
System.out.println("요일: " + date.getDay());
System.out.println("시: " + date.getHours());
System.out.println("분: " + date.getMinutes());
System.out.println("초: " + date.getSeconds());
// getTime(): 1970년 1월 1일 자정부터 클래스 객체에 저장된 시간까지 지나온 시간을 밀리초 단위로 얻어온다 => 13자리 정수
System.out.println(date.getTime());
System.out.printf("밀리초: %03d\n" , date.getTime() % 1000);
// getTimeOffset() : 영국 시간과 현지 시간의 차이를 분 단위로 얻어온다.
System.out.println(date.getTimezoneOffset());
System.out.println("=========================================================");
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
// System.out.println(sdf2.format(calendar)); //예외 발생
// Calendar 서식 지정 getTime 메소드 실행 후 서식지정
System.out.println(calendar.getTime());
System.out.println(sdf2.format(calendar.getTime())); //예외 발생
System.out.println("년: " + calendar.get(Calendar.YEAR));
System.out.println("월: " + calendar.get(Calendar.MONTH)+1);
System.out.println("일: " + calendar.get(Calendar.DATE));
System.out.println("일: " + calendar.get(Calendar.DAY_OF_MONTH));
// 일(1), 월(2), 화(3), 수(4), 목(5), 금(6), 토(7)
System.out.println("일: " + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("시(12시간): " + calendar.get(Calendar.HOUR));
System.out.println("일(24시간): " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("분: " + calendar.get(Calendar.MINUTE));
System.out.println("초: " + calendar.get(Calendar.SECOND));
System.out.println("밀리초: " + calendar.get(Calendar.MILLISECOND));
System.out.println("=========================================================");
// currentTimeMillis(): 1970년 1월 1일 자정부터 이 메소드가 실행되는 시간까지 지나온 시간을 밀리초 단위로 얻어온다 => 13자리 정수
System.out.println(System.currentTimeMillis());
// currentTimeMillis() 메소드는 13자리 정수이므뢰 int 타입의 변수에 저장할 수 없고 long 타입의 변수에 저장해 사용한다.
// int start = System.currentTimeMillis(); //에러
long start = System.currentTimeMillis(); //시작 시간
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long end = System.currentTimeMillis(); //종료 시간
System.out.println("실행 시간: " + (end - start) / 1000. + "초");
// currentTimeMillis() 메소드로 연산할 경우 일반적 사칙연산은 문제가 생기지 않음.
// 연산결과에 SimpleDateFormat 클래스 객체를 사용해 서식을 지정하면 offset 값이 포함된 시간으로 서식적용
// => 연산 결과에서 offset 값을 빼면 된다.
SimpleDateFormat sdf4 = new SimpleDateFormat("실행 시간: HH:mm:ss.SSS초");
System.out.println(sdf4.format(end-start));
System.out.println(sdf4.format(end-start-32400000));
}
}

'java&eclipse 코딩 알고리즘 > 20231206' 카테고리의 다른 글
| SosooTest (0) | 2023.12.14 |
|---|---|
| SooinsooTest (0) | 2023.12.14 |
| ClassIncludeTest (0) | 2023.12.14 |
| DateTimeTest2 (0) | 2023.12.14 |
| ConvertTest4 (0) | 2023.12.14 |