- date, calendar2024년 07월 25일
- chantleman
- 작성자
- 2024.07.25.:31
getTime(): 1970년 1월 1일 0시로부터 지난 시간을 나타냄
Date date = new Date(); long time = date.getTime();
1 ~ 100만까지 더하는데 걸리는 시간 출력
long p=0; Date d1 = new Date(); //d1을 불러왔을 그 당시의 시간 for(long i =1;i<=1000000;i++) { p+=i; } Date d2 = new Date(); //d2를 불러올 당시의 시간 long time = d2.getTime() - d1.getTime(); System.out.println(time+"ms");
프로그램이 느리다 싶으면 이런식으로 date 객체들을 생성해서 시간을 체크해줘야합니다.
벤치마크(알고리즘이 얼마나 효율적인지 체크)
: 한 프로젝트에서 여러 기능을 개발하게 되는데 만약 속도가 느리면
어느부분에서 병목현상이 발생했는지 확인해야됩니다.그럴때 date 를 이용해서 속도 체크 합니다
디비튜닝
: 보통 DB에서 쿼리 갖고올때 속도 차이가 많이 발생하기때문에
만약 느리면 DB 쿼리를 확인해보고 쿼리를 수정해야합니다
날짜 형식 맞추기
HH : 0~23
hh : 1~12
a : am/pm
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd a hh:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str = sdf.format(date); System.out.println(str);
date → String → date 변환
public void method5() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String str= ScanUtil.nextLine("날짜: "); //TO_DATE try { Date date = sdf.parse(str); System.out.println(date); } catch (ParseException e) { System.out.println("년-월-일 형식으로 하세요"); } }
parse는 입력받을 때 형식을 다르게 할수도 있기 때문에 예외처리를 해줘야합니다.
오늘로부터 며칠 뒤는 어떤 날짜인지 출력
Date 사용해서 하기
public void method6() { int days = ScanUtil.nextInt("며칠 뒤: "); Date date = new Date(); Date date2 = new Date(date.getTime()+1000L*60*60*24*days); //int범위 벗어나서 L붙임 SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); String str = sdf.format(date2); System.out.println(str); }
Calendar사용해서 하기
public void method2() { int day = ScanUtil.nextInt("더할 날짜 입력: "); Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, day); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Date date = cal.getTime(); System.out.println(sdf.format(date)); }
오늘로부터 특정 날짜가 며칠 뒤인지 출력
public void method7() { String str = ScanUtil.nextLine("날짜:"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); Date date; try { date = sdf.parse(str); //특정날짜 date로 형변환 Date cur = new Date(); //현재 날짜 long time = date.getTime() - cur.getTime(); long days = time/1000/60/60/24; System.out.println(days); } catch (ParseException e) { System.out.println("날짜 형식 yyyy-mm-dd로 해주세요"); } }
데이터 변경 set
Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2028); cal.set(Calendar.DATE, 1); cal.set(Calendar.HOUR, 1);
현재 날짜 년도를 2028년으로, 일을 1일로, 시간을 한시로 설정
시간 더하기
Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, 100); //100일 뒤 날짜 cal.add(Calendar.HOUR,30); //30시간 뒤 cal.add(Calendar.DATE, -1); //전 날짜
현재 날짜에서 100일 뒤, 30시간 뒤의 전 날짜 출력
값가져오기
int day = cal.get(Calendar.DATE); System.out.println(day);
Calendar → date
Date date = cal.getTime(); System.out.println(date);
import java.util.Calendar; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import kr.or.ddit.util.ScanUtil; public class CalendarExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("연도를 입력하세요 (예: 2024): "); int year = scanner.nextInt(); System.out.print("월을 입력하세요 (1-12): "); int month = scanner.nextInt(); Calendar cal = Calendar.getInstance(); cal.set(year, month - 1, 1); // 월은 0부터 시작하므로 month - 1 while(true) { if (month < 1 || month > 12) { System.out.println("잘못된 월입니다. 1에서 12 사이의 값을 입력하세요."); return; } // 첫 번째 날의 요일과 최대 일 수를 계산 int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK); int maxDayOfMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH); // 현재 달을 출력하기 위한 SimpleDateFormat 객체를 생성 Date date = cal.getTime(); SimpleDateFormat sdf = new SimpleDateFormat(" yyyy년 MM월 "); System.out.println("===================" + sdf.format(date) + "===================="); System.out.println("일\t월\t화\t수\t목\t금\t토"); System.out.println("==================================================="); // 첫 번째 날 이전의 공백을 출력 for (int i = 1; i < firstDayOfWeek; i++) { System.out.print("\t"); } // 달력 날짜를 출력 for (int day = 1; day <= maxDayOfMonth; day++) { System.out.print(day + "\t"); if ((day + firstDayOfWeek - 1) % 7 == 0) { System.out.println(); } } System.out.println(); String str = ScanUtil.nextLine("< 이전달 다음달 >"); if(str.equals("<")){ cal.add(Calendar.MONTH,-1); } if(str.contentEquals(">")) { cal.add(Calendar.MONTH,1); } } } }
calendar클래스에서 월을 0~11까지 인덱스로 처리하기 때문에 1을 더해줘야함
> 입력하면 다음달로
< 입력하면 이전달로 넘어가기
728x90'자바' 카테고리의 다른 글
collection (0) 2024.07.26 hash (0) 2024.07.26 try-catch, throw Exception (2) 2024.07.24 간단한 게시판 예제 (1) 2024.07.24 인터페이스 (2) 2024.07.24 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)